HTTP 03 HTTP 报文

Posted 神之一招

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP 03 HTTP 报文相关的知识,希望对你有一定的参考价值。

客户端的HTTP报文, 叫做请求报文

服务器端的叫做 响应报文.

HTTP 报文本身是由多行 (用 CR+LF 作换行符) 数据构成的字符串文本.

HTTP 报文大致分为报文首部 和 报文主体 两部分. 

请求报文及响应报文的结构

在传输的过程中, 还可以对报文进行压缩和编码. 另外要对报文进行分块, 以小块(数据包)的形式进行传输

常用的header 字段有:

 

Accept-Charset 设置接受的字符编码, Accept-Charset: utf-8

Cookie 设置服务器使用Set-Cookie发送的http cookie, Cookie: $Version=1; Skin=new;

X-Csrf-Token,X-CSRFToken,X-XSRF-TOKEN 防止跨站请求伪造, X-Csrf-Token: i8XNjC4b8KVok4uw5RftR38Wgp2BFwql

X-Request-ID,X-Correlation-ID 标识客户端和服务端的HTTP请求, X-Request-ID: f058ebd6-02f7-4d3f-942e-904344e8cde5

Content-Type 设置响应体的MIME类型, Content-Type: text/html; charset=utf-8

Set-Cookie 设置HTTP Cookie, Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1

Status 设置HTTP响应状态, Status: 200 OK

获取部分内容的范围请求

以前, 用户不能使用高速的互联网时, 下载比较大的图片就很吃力, 如果下载过程中遇到网络中断的情况, 那就必须重头开始, 为了解决上述问题, 需要一种可恢复的机制. 所谓恢复是指能从之前下载中断处恢复下载.

Content-Range: 可以用来制定请求部分内容.

针对范围请求, 响应会返回状态码 206 partial content 响应报文, 如果服务器无法响应范围请求, 则会返回状态码 200 OK 和 完整的实体内容.

返回状态码

200 OK 一切OK

204 No Content 请求已经成功处理, 但在返回的响应报文中不包含实体的主体部分, 另外, 也不允许返回任何实体主体

206 partial content, 表示响应了部分请求

301 Moved Permanently 永久重定向, 状态表示请求的资源已经被分配了新的 URI, 以后使用新的URI

302 Found 临时重定向, 表示当次请求的资源已被分配了新的 URI, 希望用户本次能使用新的URI

303 See Other 根 302 类似, 并且要求用户下次请求时必须使用 GET 方法.

注意: 当 301, 302, 303 响应状态码返回时, 几乎所有的浏览器都会把 POST 改成 GET, 并删除请求报文内的主题, 之后请求会自动再次发送.

304 Not Modified 根以上的3XX不同, 跟重定向没啥关系, 表示附带条件的请求, 如果条件不满足, 返回304

 

 307 Temporary Redirect, 临时重定向, 与 302 相同

4XX 客户端错误

400 Bad Request, 请求报文中包含语法错误

401 Unauthorized 没有权限, 认证失败

403 Forbidden 请求的资源被服务器拒绝(服务器无需提供理由)

404 Not Found, 服务器上没看到你请求的资源

5XX 服务器错误

500 Internal Server Error, 表明请求过程中服务器端发生了错误.

503 Service Unavailable, 服务器暂时处于超负载或正在进行停机维护, 现在无法处理请求.

 

以上是关于HTTP 03 HTTP 报文的主要内容,如果未能解决你的问题,请参考以下文章

HTTP协议详解(头报文)

HTTP 报文结构

HTTP请求报文和HTTP响应报文(转载)

HTTP报文(message)是什么?请求报文响应报文报文首部(header)报文主体(body)

http报文详解

HTTP请求报文和HTTP响应报文