HTTP报文是在Web服务器和浏览器之间进行交换的文本数据,一种是从浏览器发出的请求,一种是服务器发出的响应。

请求报文的第一行包括:1、请求方法 2、当前使用的HTTP协议版本 3、请求地址

GET / HTTP/1.1
headers \r\n
\r\n
message-body

响应报文的第一行包括:1、当前使用的HTTP协议版本 2、三位阿拉伯数字的HTTP状态码 3、状态描述

HTTP/1.1 200 OK
headers \r\n
\r\n
message-body

HTTP状态码

HTTP状态码是服务器返回给浏览器的三位数字,说明了请求的状况。

状态码分为五大类:1xx,2xx,3xx,4xx,5xx。

1xx

告知类状态码:服务器收到请求,需要进一步处理。

2xx

服务器收到请求,请求成功。

200 OK

成功的请求。

204 No Content

不用返回内容。浏览器请求成功,但是服务器不用返回内容。服务器返回的报文,报文体是空的。204状态默认会被浏览器缓存。

3xx

客户端(浏览器)需要进一步行动以完成整个请求,大多数3xx用于重定向。如果下一次的请求方法是GET或是HEAD,则在返回3xx状态码的情况下,不需要用户参与,浏览器自动进行下一步的动作。

301   Moved Permanently

永久重定向。服务器返回的报文头部包括Locaction字段,值为新的资源地址。

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp

302 Found

暂时重定向。服务器返回的报文头部包括Locaction字段,值为新的资源地址。

和301永久重定向的区别在于,用户代理(比如浏览器)仍需要请求原地址。

304 Not Modified

资源未变动。浏览器不用再次发送请求报文,重定向到本地缓存。

4xx

客户端(浏览器)错误。返回的报文体包含错误信息,客户端应该将其展示给用户。

403 Forbidden

被禁止。服务端收到请求,拒绝做进一步的动作。因为客户端(浏览器)没有访问某些资源的权限。

404 Not Found

资源未找到。

HTTP Headers

HTTP Headers用于客户端和服务端交换请求时添加额外的信息。

HTTP Request Headers 请求头

浏览器发送请求报文的时候,在请求报文头部添加请求头。

If-None-Match

是否匹配。请求报文的请求头包含If-None-Match字段,值是之前返回报文返回头的Etag值。

If-Modified-Since

资源在某个时间点之后是否过期。

只能在GET或是HEAD方法中使用。级别比If-None-Match低。

HTTP Respons Headers 返回头

服务器发送返回报文的时候,在返回报文头部添加返回头。

Last-Modified

资源上次更新的信息。

由服务器返回,没有Etag字段准确。

Expires

资源过期时间。

服务器认为在该时间点之后,资源就要被视为过期。

ETag(Entity Tag)

实体标签。可以理解为某资源的id,签名或是指纹。Etag没有统一的生成方式。

General header 通用头

通用头部信息,请求头或是返回头都可以添加。

Cache-Control

控制资源的缓存机制。

请求报文头和返回报文头都可以包含。

控制字段分为四类:缓存型字段,时效性字段,重新验证和重新加载,其它。

缓存型字段:决定浏览器的缓存能力。

public:可以被任何缓存机制缓存,比如代理或是ISP。

private:被最终的用户缓存,不会被网络的中间节点缓存。

no-cache:强制浏览器发送请求来验证本地缓存资源是否有效。

时效性字段:决定资源是否有效。

max-age=<seconds>: 资源的过期时间。与Expires不同,指定的是资源相对于之前发送请求的时间。

重新验证和重新加载:浏览器重新验证资源或是重新加载资源。

must-revalidate:在使用前必须验证资源的有效性,不应该使用失效的资源。

其它:

no-store:浏览器缓存不会缓存任何东西。

参考资料】

https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

https://erikeldridge.wordpress.com/2011/01/23/a-dive-into-http-1-1-message-formatting/

https://www.koozai.com/blog/analytics/server-response-codes-and-what-they-mean/

HTTP状态码和HTTP请求头的更多相关文章

  1. HTTP状态码、请求方法、响应头信息

    HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应 ...

  2. http状态码 以及请求响应头相关

    1xx消息[编辑] 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非 ...

  3. TCP/IP协议族(一) HTTP简介、请求方法与响应状态码

    接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的.接下来的几篇博客都是关于TCP/IP协议族的,本篇博客就先简单 ...

  4. web请求的状态码

    摘录于  https://www.cnblogs.com/lovychen/p/6256343.html 1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行 ...

  5. 02-HTTP的请求方法以及响应状态码

    1.   HTTP的请求方法以及响应状态码 1.1. 请求方法 http请求方法有GET.POST.PUT.HEAD.DELETE.OPTIONS.TRACE.CONNECT.当然上述方法是基于HTT ...

  6. 【转载】HTTP 响应头与状态码

    原文地址:https://segmentfault.com/a/1190000006689786 HTTP Response Header 响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描 ...

  7. HTTP响应头 状态码

    HTTP 简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传 ...

  8. http--响应请求状态码

    针对客户端向Web服务器发送的任意一个HTTP请求,不论在何种情况下得到一个响应,每个响应均具有一个由3位数字表示的状态码和相应的描述文字.不同数值的状态码体现了不同类型的响应状态,W3C对响应状态码 ...

  9. 常用的HTTP状态码,网站开发请求状态必备

    成功的状态码: 200 – 服务器成功返回网页 304 – 未修改 失败的状态码: 404 – 请求的网页不存在 503 – 服务器暂时不可用 500 – 服务器内部错误 下面的不是很常用,记住上面那 ...

随机推荐

  1. 51nod1965. 奇怪的式子(min_25筛)

    题目链接 http://www.51nod.com/Challenge/Problem.html#!#problemId=1965 题解 需要求的式子显然是个二合一形式,我们将其拆开,分别计算 \(\ ...

  2. Powershell cannot be loaded because running scripts is disabled on this system 解决办法

    问题背景 第一次跑ps时,出现了下面的提示.这是因为windows不允许执行脚本而已,不要大惊小怪. 解决办法 这个需要管理员执行,不然会出现以下的情况 正常情况

  3. android4.0以上访问网络不能在主线程中进行以及在线程中操作UI的解决方法

    MONO 调用一个线程操作UI 然后报Only the original thread that created a view hierarchy can touch its views.错误 goo ...

  4. 开发者必备的12个JavaScript库

    现在 web 设计是最有趣的了,做好 web 设计不仅要熟练使用 Javascript,css 和 html 等,还要有自己的创意设计.为了方便大家发挥自己的创意,就产生了很多 JS 框架,Node. ...

  5. SQL1042C running a fenced routine (stored procedure/UDF)

    Relation to this link http://www-01.ibm.com/support/docview.wss?uid=swg21399105 2015-01-11-13.38.19. ...

  6. accessToken的使用

    1.accessToken是啥,干嘛用? 形象解释:申请调兵-->皇帝同意-->兵符-->开始调兵 拿到用户在第三方平台的唯一的标识; 获取用户的nickname,头像,邮箱等其他信 ...

  7. Javac之关于方法的调用1

    方法的调用从Attr类的visitApply()方法进入,如下: /** Visitor method for method invocations. * NOTE: The method part ...

  8. js中一次性注册多个事件

    在js中,如果想一次性给一个控件或者标签初测多个事件的方法: 假如有个<input>标签: <input id=”inputValue” value=”www.baidu.com”/ ...

  9. docker搭建gitlab,设置邮件提醒,并运行runner

    接着http://www.cnblogs.com/wsy1030/p/8431837.html 在另一台机子运行gitlab: docker run --name='gitlab' -d -p 222 ...

  10. PHP将字符串写入txt文件

    function writelog($str) { $open=fopen("e:\log.txt","a" ); fwrite($open,$str); fc ...