两类报文
- 请求报文
- 响应报文
报文分三部分
对报文进行描述的起始行(start line)
请求报文 GET /php.info HTTP/1.1
报文内容 | 说明 |
---|---|
GET | 请求的方法 |
/php.info | 请求的地址 |
HTTP/1.1 | 请求版本 |
响应报文 HTTP/1.1 200 OK
报文内容 | 说明 |
---|---|
HTTP/1.1 | 响应版本 |
200 OK | 响应的状态码 内容 |
包含属性的首部(header)块
请求报文
报文内容 | 说明 |
---|---|
accept(接收) | 指定客户端能够接收的内容类型 text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 |
Accept-Encoding | gzip(数据格式 ), deflate(默认且目前仅使用deflate算法压缩data部分,此法用于压缩传输), sdch(即通过字典压缩算法对各个页面中相同的内容进行压缩,减少相同的内容的传输。如:一个网站中一般都是共同的头部和尾部,甚至一些侧边栏也是共同的。之前的方式每个页面打开的时候这些共同的信息都要重新加载,但使用SDCH压缩方式的话,那些共同的内容只用传输一次就可以了) |
Accept-Language | zh-cn ,zh; q=0.8 接收语言Cache-Control: |
Cache-Control | 值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。 而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如: Cache-control: max-age=5(表示当访问此网页后的5秒 内再次访问不会去服务器) |
connection | keep-alive 默认是长连接 其优点是、在资源包含多个元素是(比如web页面中的图片)将减少下载时间,当Connection为Keep-Alive时、表示在Keep-Alive时间内不会断开连接。而非KeepAlive模式时、请求之后都将会断开 |
host | 域名或ip |
If-Modified-Since | 使用If-Modified-Since标签,把上次服务器告诉它的文件最后修改时间返回到服务器端了,文件没有改动过,所以服务器返回的HTTP状态码是304,没有发送页面的内容 |
Upgrade-Insecure-Requests | 值为1 则是告诉服务器,自己支持这种操作,也就是我能读懂你服务器发过来的上面这条信息,并且在以后发请求的时候不用http而用https |
User-Agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 表示请求的客户端浏览器详细信息 |
响应报文
报文内容 | 说明 |
---|---|
Connection | keep-alive* 默认是长连接 其优点是、在资源包含多个元素是(比如web页面中的图片)将减少下载时间,当Connection为Keep-Alive时、表示在Keep-Alive时间内不会断开连接。而非KeepAlive模式时、请求之后都将会断开 |
Content-Encoding | 响应正文使用的数据压缩格式 |
Content-language | 响应正文使用的语言 |
Content-Type | 响应正文的类型(是图片还是二进制字符串) |
Date | 服务器响应的时间 |
Last-Modified | Sun, 26 Jun 2016 04:14:32 GMT* 最后修改的时间 |
Server | nginx/1.6.2* http服务器的类型/版本 这个有时会造成有人专门利用特定版本网页服务器漏洞进行攻击,nginx可以在配置文件中增加或修改server_tokens off 来去除版本号 |
Link | Accept-Encoding 响应头,明确告知缓存服务器按照 Accept-Encoding 字段的内容,分别缓存不同的版本 |
Set-Cookie | AST_LANG=zh; expires=Mon, 26-Jun-2015 14:37:17 GMT; Max-Age=31536000; path=/; domain=.php.net* |
Transfer-Encoding | chunked 分块编码 表示输出的内容长度不能确定,报文中的实体需要改为用一系列分块来传输,每个分块包含十六进制的长度值和数据,长度值独占一行,长度不包括它结尾的 CRLF(\r\n),也不包括分块数据结尾的 CRLF。最后一个分块长度值必须为 0,对应的分块数据没有内容,表示实体结束 |
Vary | 参考此文章 https://imququ.com/post/vary-header-in-http.html |
X-Frame-Options | DENY:浏览器拒绝当前页面加载任何Frame页面,SAMEORIGIN:frame页面的地址只能为同源域名下的页面,ALLOW-FROM:origin为允许frame加载的页面地址 |
X-Powered-By | PHP/5.2.1,可在php.ini中增加或修改 expose_php = Off关闭,使用了ThinkPHP会输出 ThinkPHP 2.0,可修改相关类文件关闭 |
Cache-Control | max-age=600 表示当访问此网页后的600秒内 告诉浏览器再次访问不去访问服务器 |
Expires | HTTP控制缓存的基本手段,这个属性告诉缓存器:相关副本在多长时间内是新鲜的。过了这个时间,缓存器就会向源服务器发送请求,检查文档是否被修 改。几乎所有的缓存服务器 |
Content-Length | 实体长度 通常如果 Content-Length 比实际长度短,会造成内容被截断;如果比实体内容长,会造成 pending |
可选的、包含数据的主体(body)
就是http 要传输的内容