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. Secondary NameNode究竟是做什么的

    Secondary NameNode:它究竟有什么作用? 在hadoop中,有一些命名不好的模块,Secondary NameNode是其中之一.从它的名字上看,它给人的感觉就像是NameNode的备 ...

  2. 正则表达式 IP域名

    不废话,我这个起码不坑人,有的把我坑死 var objRegExp = /^((([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5]))))\.)((([0-9]|([ ...

  3. Android各版本及API对应关系,持续更新!

    以下是Android的各个版本与API的对应关系图标,便于查阅,会持续更新 API等级 Android版本号 Android版本名称 对应支持包 API等级1: Android 1.0     API ...

  4. 【转载】TableLayout表格布局详解

    原文地址:http://www.cnblogs.com/manuosex/p/3584701.html 一.Tablelayout简介 Tablelayout类以行和列的形式对控件进行管理,每一行为一 ...

  5. C# 字符串类型介绍与操作

    一.关于字符串操作的方法 System.String类提供了很多工具方法,包括返回字符数据长度,查找当前字符串中的子字符串和转换大小写等方法. 在String类中常用的比较字符串的方法主要有Compa ...

  6. 《LeetBook》leetcode题解(12):Integer to Roman[M]

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  7. HttpClient使用详细教程

    Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...

  8. Ubuntu 16.04 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller” 不能上网

    来源:http://forum.ubuntu.org.cn/viewtopic.php?f=116&t=463646 1.执行如下命令 uname -a sudo lspci -knn sud ...

  9. TCP网络参数优化

    TCP连接的状态 TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用.特定数据包以及超时等,具体状态如下所示: CLOSED:初始状态,表示没有任何连接. LISTEN:Server端的某 ...

  10. WPF中Label使用StringFormat

    1. 在WPF中Label的Content有时内容只需要改变个别数字,而不需要所以内容都修改,这时候就要使用StringFormat, 如: <Label Content="I hav ...