博客来源;
HTTP协议基础
****************************************************************************************************************
关键点:
1. 了解请求和相应
2. 了解响应的格式:Doc分析的基础
*****************************************************************************************************************
1. http运作方式
请求/响应范式
请求信息
:统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容
响应信息
:其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
2. 请求的格式
包括:请求行、请求头、请求正文
hots/user-agent /accept/accept-Lanuage 等都为Header域
- 如果Request-URI是absoluteURI,主机是 Request-URI的一部分。 则乎略请求中的任何Host头部域值。
- 如果Request-URI不是absoluteURI,且请求包括 Host 头部域,则主机由 Host 头部域值决定
请求头(Request Header)
- Host www.baidu.com 主机域名以及端口(80缺省)
- User-Agent 用户代理信息 用于统计用途、协议侵害跟踪和自动识别用户代理 格式 User-Agent: <product>[/<version>] 例子: Mozilla/5.0 Firefox/3.6.12 FirePHP/0.5
- Accept 指定响应可接受的确认媒体类型
- Accept-Language 限制请求所选择的作为响应的自然语言集
- Accept-Encoding 限制请求所选择的作为响应的Content-Encoding types
- Accept-Charset 能够用来指出响应可接受的字符集
- Keep-Alive 使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,避免了建立或者重新建立连接
- Connection允许发送方指定希望的连接选项 close/keep-alive
- Cookie 这个会在以后做一个详细的说明
- Referer 是可选的 用户客户端向服务端发送上一次链接,用户根据和统计 他可以用于防止CSRF(Cross-site request forgery 跨站请求伪造)以及盗链,但也不是万能的。
3. 响应的格式
三部分构成:
- 协议版本/响应码
- 响应头(Response Header)
- 响应正文
协议版本/响应码 HTTP/1.1 200 OK
响应头(Response Header) Date/server/content-Length/connection 等
响应正文 就是\r\n CRLF(回车换行) 下面的 就是html页面当然也可能是其他形式。
- Date Fri, 10 Dec 2010 03:21:46 GMT 表示消息发生的日期和时间 以RCF 1123[8]的格式发送
- Server 服务端服务器信息 BWS/1.0 百度自己研发的或者改进的
- Content-Length 指定响应正文的长度大小
- Content-Type 指定响应正文MIME的类型以及编码 服务可以去控制 text/html text/xml text/html;charset=gb2312
- Cache-Contol 用于控制HTTP缓存(在HTTP/1.0中仅仅实现了Pragma: no-cache)
- Public 指示响应可被任何缓存区缓存。Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换)
- Expries 给出相应被认为过期的日期和时间
- Content-Encoding 文档的编码方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间
- Connection 连接选项 close/keep-alive
4. http请求方法
HTTP1.1 总共定了8个公用方法
- OPTIONS Fri, 10 Dec 2010 03:21:46 GMT 表示消息发生的日期和时间 以RCF 1123[8]的格式发送
- HEAD 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息
- GET 向特定的资源发出请求
- POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
- PUT 向指定资源位置上传其最新内容。出于安全考虑,大多数服务器不支持此方法
- DELETE 请求服务器删除Request-URI所标识的资源。出于安全考虑,大多数服务器不支持此方法
- TRACE 回显服务器收到的请求,主要用于测试或诊断。出于安全考虑,大多数服务器不支持此方法
- CONNECT 回显服务器收到的请求,主要用于测试或诊断。出于安全考虑,大多数服务器不支持此方法。