HTTP请求
请求行
包含请求方法,请求URI和http版本。
请求方法
- GET,请求访问已被URI识别的资源,请求不需要实体主体。
- POST,传输实体主体。
- PUT,传输文件,本身无验证机制,存在安全问题。
- DELETE,删除文件,与PUT相反的方法,也无验证机制。
- HEAD,HEAD方法和GET方法一样用于获取资源,只是HEAD方法的请求不返回报文的主体部分。
- OPTIONS,用来查询针对请求URI指定的资源支持的方法(GET?POST?等)。
- TRACE,让web服务器端将之前的请求通信返回给客户端的方法,用于追踪路径,请求在各个代理服务器之间中转最终到达目标服务器,在中转时请求可能会被篡改。
- CONNECT,要求用隧道协议连接代理,主要使用SSL和TLS协议把通信内容加密后经网络隧道传输。
请求头
浏览器的一些信息
请求主体
HTTP响应
响应行
返回状态码,原因短语和http版本。
状态码
- 1xx:指示信息–表示请求已接收,继续处理
- 2xx:成功–表示请求已被成功接收、理解、接受
- 3xx:重定向–要完成请求必须进行更进一步的操作
- 4xx:客户端错误–请求有语法错误或请求无法实现
- 5xx:服务器端错误–服务器未能实现合法的请求
200(ok): 服务器正常处理了请求
304(Not Modified): 资源未发生变动,一般浏览器会使用已经缓存过的资源
401(UNauthorized): 第一次返回表示需要认证,第二次则是表示认证失败
403(Forbidden): 请求资源的访问被服务器拒绝
404(Not Found): 服务器上不存在请求的资源
500: 服务器内部处理异常
503: 服务器暂时处于超负荷或者正在进行停机维护,无法处理请求
响应头
服务器的一些信息
响应主体
报文
用于HTTP协议交互的信息被称为报文。
报文结构
HTTP报文大致分为报文首部和报文主体两块,中间用空行来划分。通常,不一定有报文主体。
- 报文首部:包含服务器或客户端需处理的请求或响应的内容及属性。
- 报文主体:是应该被发送的数据。
报文首部
通用首部
既可以出现在请求报头,也可以出现在响应报头中
Cache-Control
用于操作缓存的工作机制,如缓存时间,是否必须向服务器确认等
Connection
控制不再转发给代理的首部字段和持久连接,http1.1版本默认的连接都是持久连接
Date
表明创建Http报文的日期和时间
Transfer-Encoding
规定传输报文主体时采用的编码方式
请求首部
Accept
通知服务器客户端可以处理的媒体类型以及媒体类型的相对优先级,如 application/json,text/html,image/jpeg等。优先级使用q=来表示权重,最大值为1,默认权重为1.0
Accept-Language
通知服务器客户端可以处理的语言集以及相对优先级
Accept-Encoding
优先的内容编码
Authorization
用于高速服务区客户端的认证信息。通常在接收到服务器返回的401状态码后,客户端将Authorization加入请求中
Host
http1.1规范中唯一一个必须包含在请求内的首部字段,可为空
User-Agent
创建请求的浏览器名称等信息
响应首部
Location
提供重定向的资源地址
Server
服务器上安装的http服务器应程序信息
Set-Cookie
开始状态管理所使用的Cookie信息(响应首部),管理服务器端设置的cookie信息,如expires过期时间,domain所属域名和httponly等
Cookie
服务器端收到的Cookie信息(请求首部)
实体首部
实体报头用来定于被传送资源的信息,既可以用于请求也可用于响应。请求和响应消息都可以传送一个实体
Content-Type
发送给接收者的实体正文的媒体类型
Content-Lenght
实体正文的长度
Content-Language
描述资源所用的自然语言,没有设置则该选项则认为实体内容将提供给所有的语言阅读
Content-Encoding
实体报头被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。
Last-Modified
实体报头用于指示资源的最后修改日期和时间
Expires
实体报头给出响应过期的日期和时间