HTTP整理(部分)
简介
HTTP协议工作在客户端-服务端架构上,浏览器作为HTTP客户端通过url向HTTP服务端即web服务器发送所有请求。
Web服务器:Apache、IIS等
默认端口:80
HTTP无连接:每次只处理一个请求,节约传输时间。
HTTP媒体独立:只要客户端和服务器知道如何处理,任何类型数据都能通过HTTP发送。
HTTP无状态:无记忆功能。如果后续处理需要前面信息,必须重传。
请求和响应
请求行
请求方法
是HTTP协议里规定的,但是web sever未必允许/支持这些方法
GET
POST
比get多了主体信息、头信息里要标主体长度、告诉服务器content-type
PUT
DELETE
TRACE
用了代理上网,如代理访问网站,想看代理有没有修改HTTP请求,可以用TRACE来测试下,服务器会把最后收到的请求返回
OPTIONS
返回服务器可用的请求方法
HEAD
和GET基本一致,不返回内容,如果只是确认一个内容还正常存在,不返回内容,用HEAD比较合适
请求资源路径
url一部分
请求协议
请求头信息
如Host:localhost
Content-length:请求主体长度
头信息结束后由一个空行(不管有无主体信息,空行不能少)
头信息非常丰富
请求主体信息
可以没有
响应行
如HTTP/1.1 200 OK
协议
版本
状态码
状态文字
响应头信息
content-length:接下来主体长度
响应主体信息
Referer、防盗链
代表网页来源,即上一页地址,如果直接在浏览器上敲地址,则没有referer
在web服务器层面,根据http协议的referer头信息判断,如果来自站外,则统一写一个防盗链
缓存控制
有一些缓存服务器,浏览器自身也有缓存功能
如果时间点后修改过,则重新请求
如果最新的ETag和If-None-Match不匹配,重新请求
cache-control
内容压缩
Content-Encoding:gzip
为了提高传输速度,服务器对主体信息阿索,如gzip、deflate、compress、google chrome的sdch压缩
一般压缩文本格式文件
采集时,可以不发送Accept-Encoding信息,采集的直接是源代码,也可采集gzip,再用php解压(?)