您的位置:首页 > 理论基础 > 计算机网络

HTTP/1.1协议

2018-01-04 17:27 281 查看
HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间数据交换的过程。

 

1.Http1.0和1.1

Http1.0:请求一次,连接自动断开。

Http1.1:一次连接,可以发起多次请求。

 

2.在windows中使用telnet发起Http请求

telnet localhost 8080   //连上服务器

GET /abc/1.html HTTP/1.1 // 编写HTTP请求

Host: // 输入服务器名

 

3.HTTP请求的格式

【一个请求行】换行

【若干个请求头】换行

 换行

【post消息】

例如:

GET /books/abc.html HTTP/1.1    

Accept:image/webp,image/*,*/*;q=0.8

Accept-Encoding:gzip, deflate, sdch

Accept-Language:zh-CN,zh;q=0.8

Cache-Control:max-age=0

Connection:keep-alive

Cookie:uuid_tt_dd=1603386812225897869_20161020; __message_sys_msg_id=0; __message_gu_msg_id=0; __message_cnel_msg_id=0; __message_district_code=000000; __message_in_school=0; dc_tos=ofbqa0; dc_session_id=1476929736226

Host:dc.csdn.net

Referer:http://www.csdn.net/article/2014-09-17/2821721

User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36

// 说明

 //第一行是请求行 格式为:【请求方式  资源URL  HTTP版本号】

// 请求方式共有7种,常用的是GET和POST两种,GET常用来从服务器得到信息,POST主要用来向服务器提交信息

// GET请求提交给服务器的信息被写在URL的“?“后面,使用“&”分隔多个键值对,不具有保密性,通常该信息容量最大不超过1K

// POST请求发给服务器端的信息无容量限制,该信息被放在请求体里发给服务器。POST请求通常通过form表单提交。

//第二行开始是多条请求头信息

 

2.常用请求头

Accept:客户支持的数据类型,全支持是"*/*",部分支持比如"text/html image"表示支持HTML和图片

Accept-Charset:客户机采用的编码方式

Accept-Language:客户机语言环境,用来提示服务器进行正确的国际化,如"zh-cn"表示中文中国地区

Accept-Encoding:客户端支持的压缩格式,服务器端可根据该信息,将响应内容压缩至该格式进行传输

Host:请求哪个主机的资源

If-Modified-Since:如果服务器端相应资源的最后修改日期比这个日期新,就发送新的相应,否则就读取客户机浏览器缓存

Referer:表明当前的请求是从哪个页面发送出来的,用来支持服务器端做防盗链工作。

User-Agent:客户机的软件环境,如浏览器品牌及版本,操作系统品牌及版本等

Cookie:Cookie信息

Connection:用来告诉服务器端,当响应完成以后连接是
4000
关闭还是保持。常用的值两个:close/Keep-Alive

Date:客户机的时间

 

5.响应的格式

【一行状态行】换行

【若干个响应头】换行

 换行

【实体内容】

举例:

HTTP/1.1 200 OK 

Access-Control-Allow-Credentials:true

Access-Control-Allow-Methods:GET,POST

Access-Control-Allow-Origin:http://so.csdn.net

Connection:keep-alive

Content-Encoding:gzip

Content-Type:text/plain;charset=UTF-8

Date:Thu, 20 Oct 2016 02:15:38 GMT

Expires:Thu, 01-Jan-1970 00:00:00 GMT

Keep-Alive:timeout=20

Server:openresty

Set-Cookie:dc_session_id=1476929736226;Path=/;Domain=csdn.net;Expires=Thu, 20-Oct-2016 02:45:38 GMT

Transfer-Encoding:chunked

Vary:Accept-Encoding

//说明

// 第一行是状态行  格式为【HTTP版本号 状态码 原因叙述】

// 状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数,响应状态码分为5类

// 100~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。不常见。

// 200~299:表示成功接收请求并已完成整个处理过程,常用200

// 300~399:为完成请求,客户机需要继续细化请求。例如:请求的资源已经移动到一个新地址。常用302、304和307

                    // 302:请求被服务器重定向到新的URL,与响应头中的Location头配合使用

                    // 307和304:服务器要求客户机去拿缓存

// 400~499:客户端的请求有错误。常用404、403。404表示请求的资源不存在。403表示用户没有访问该资源的权限。

// 500~599:服务器端有错误产生,常用500。

 

6.常用响应头

Location:客户发来的请求,服务器端告诉客户端,你要的东西我没有,你可以去找某某,这个过程术语叫做请求重定向,而Location就是这个某某。

Server:服务器的类型

Content-Encoding:数据压缩格式

Content-Length:数据长度

Content-type:数据类型

Last-Modified:资源缓存时间

Refresh:连命令浏览器多长时间刷新一次

Content-Disposition:是否以下载的方式打开资源

Transfer-Encoding:数据传送格式

ETag:缓存内容的头

Expires:缓存过期时间

Cache-Control:no-cache是否要缓存

Pragma:no-cache是否需要缓存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: