Http 超文本传输协议 是一个基于请求和响应模式的、无状态、应用层协议,基于TCP/IP协议
Http1.1 版本是对Http1.0的改进,支持长连接。
Http URL 格式如下:
http://host[":"port][path]
---http 通过http协议定位网络资源 也可以是FTP 协议
----host 合法的Internet主机域名或者IP
----port 指定的服务器端口 默认80
---path 请求资源的URI地址 如果URL没有给出path,浏览器默认会为请求URL 添加上“/”
GET / HTTP/1.1 Host: www.baidu.com Connection: keep-alive Pragma: no-cache Cache-Control: no-cache Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36 DNT: 1 Accept-Encoding: gzip, deflate, sdch Accept-Language: zh-CN,zh;q=0.8 Cookie: BDUSS=dmNjE0Sm9CUHlEUkRDNVl1elVHVXUwaEV6M1lQclZBYndGMENzdzVCWTA5VWxXQVFBQUFBJCQAAAAAAAAAAAEAAAAVQwYpYmFpYnV4aWhhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRoIlY0aCJWNj;
GET / HTTP/1.1 ---请求行 格式 Method Request-URI HTTP-Version
method ---请求方法 Request-URI 请求资源定位符 HTTP-Version 请求HTTP协议版本;
method---全部大写,包括如下方法:
GET 获取Request-URI所标识的资源;
POST 在 Request-URI所标识的资源附加新数据。实际上,通常会用它来支持HTML的表单。表单中填好的数据通常会被 发送给服务器,然后服务器将其发送到他要去的地方。
HEAD 请求获取Request-URI所标识的资源的响应消息报头
HEAD方法与GET方法的行为很类似,但服务器在响应中只返回首部。不会反回实体的主体部分。这就允许 客户端在未获取实际资源的情况下,对资源的首部进行检查。作用:
在不获取资源的情况下,了解资源的情况
通过查看响应中的状态码,看看某个对象是否存在
通过查看首部,测试资源是否被修改
服务器开发者必须确保返回的首部与GET请求返回的首部完全相同
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
消息报文:
Connection: keep-alive ----客户端发起长连接 keepalive 在很多情况下能够重用连接,减少资源消耗,缩短响应时间。Connection普通报头域允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭连接Pragma: no-cache
Cache-Control: no-cache ---用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。
请求时的缓存指令包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
---请求报头域用于指定客户端接受哪些类型的信息
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/44.0.2403.125 Safari/537.36
-------,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测。DNT: 1 ----禁止追踪Accept-Encoding: gzip, deflate, sdch ----请求报头域类似于Accept,但是它是用于指定可接受的内容编码。如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。 gzip, deflate 内容压缩 Google最近发明的HTTP压缩算法SDCHAccept-Language: zh-CN,zh;q=0.8
---请求报头域类似于Accept,但是它是用于指定一种自然语言。如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。Cookie:
--- 浏览器 保存当前域名的信息
Host: www.baidu.com
----- 请求报头域主要用于指定被请求资源的Internet主机和端口号
Referer: https://www.baidu.com/link?
---告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。(可以用于防止盗链)
HTTP/1.1 200 OK ---状态行
Date: Tue, 08 Dec 2015 05:13:27 GMT ---- 普通报头域表示消息产生的日期和时间 Content-Type: text/html; charset=utf-8
----指明发送给接收者的实体正文的媒体类 Transfer-Encoding: chunked
-----表示输出的内容长度不能确定 Expires: Tue, 08 Dec 2015 05:13:38 GMT
----缓存失效时间 Last-Modified: Tue, 08 Dec 2015 05:13:28 GMT
---请求资源服务器最后一次修改时间 X-UA-Compatible: IE=10
----指定浏览器 兼容模式
Content-Length: 23330
---请求资源大小