http 常见的request 请求头,response 响应头,常见的http状态码

request 请求头

1.Host (主机和端口号)

Host:对应网址URL中的Web名称和端口号,用于指定被请求资源的Internet主机和端口号,通常属于URL的一部分。

2.Connection (链接类型)

Connection:表示客户端与服务连接类型

Client 发起一个包含 Connection:keep-alive 的请求,HTTP/1.1使用 keep-alive 为默认值。

Connection 头(header) 决定当前的事务完成后,是否会关闭网络连接。如果该值是“keep-alive”,网络连接就是持久的,不会关闭,使得对同一个服务器的请求可以继续在该连接上完成。

3. Server收到请求后

如果 Server 支持 keep-alive,回复一个包含 Connection:keep-alive 的响应,不关闭连接;

如果 Server 不支持 keep-alive,回复一个包含 Connection:close 的响应,关闭连接。

如果client收到包含 Connection:keep-alive 的响应,向同一个连接发送下一个请求,直到一方主动关闭连接。

keep-alive在很多情况下能够重用连接,减少资源消耗,缩短响应时间,比如当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都去请求建立连接。

 

4. Upgrade-Insecure-Requests (升级为HTTPS请求)

Upgrade-Insecure-Requests:升级不安全的请求,意思是会在加载 http 资源时自动替换成 https 请求,让浏览器不再显示https页面中的http请求警报

HTTPS 是以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 HTTP 请求,一旦出现就是提示或报错。

如果在https的页面需要加载http的资源,那么浏览器就会报错或者提示,为了促进用户升级协议,同时不需要网站开发者劳师动众地把整个网站的http资源改成https资源,chrome增加一个Upgrade-Insecure-Requests:1头,告诉服务器,浏览器可以处理https协议,然后服务器返回Content-Security-Policy:upgrade-insecure-requests头,或者通过meta头设置,告诉浏览器,对于页面的http资源,请求时可以自动升级到https,比如在https的网站上有一张图片url是http://localhost/1.jpg,浏览器请求时会把url变成https://localhost/1.jpg,所以这里首先需要服务器在端有相对应的资源。但是有一种情况例外,那就是https网站中a标签对应的外站资源不会被升级,比如a网站有一张b网站的链接,那么这个链接对应的url不会升级。

5.User-Agent (浏览器名称)--重要

User-Agent:是客户浏览器的名称,代表浏览器身份,有些时候同样的网站使用不同浏览器访问返回的数据会不一样。

时下流行的浏览器User-Agent大全


6.Accept (传输文件类型)

  Accept的作用

Accept:指浏览器或其他客户端可以接受的MIME(MultipurposeInternet Mail Extensions(多用途互联网邮件扩展))文件类型,服务器可以根据它判断并返回适当的文件格式。

举例:

Accept: */*:表示什么都可以接收。

Accept:image/gif:表明客户端希望接受GIF图像格式的资源;

Accept:text/html:表明客户端希望接受html文本。

Accept: text/html, application/xhtml+xml;q=0.9,image/*;q=0.8:表示浏览器支持的 MIME 类型分别是 html文本、xhtml和xml文档、所有的图像格式资源。

q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容。若没有指定q值,则默认为1,按从左到右排序顺序;若被赋值为0,则用于表示浏览器不接受此内容类型。

text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;application:用于传输应用程序数据或者二进制数据。


7.Referer (页面跳转处)

Referer:表明产生请求的网页来自于哪个URL,用户是从该 Referer页面访问到当前请求的页面。这个属性可以用来跟踪Web请求来自哪个页面,是从什么网站来的等。

有时候遇到下载某网站图片,需要对应的referer,否则无法下载图片,那是因为人家做了防盗链,原理就是根据referer去判断是否是本网站的地址,如果不是,则拒绝,如果是,就可以下载;

8.Accept-Encoding(文件编解码格式)

Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式,许多情形下这可以减少大量的下载时间。

举例:Accept-Encoding:gzip;q=1.0,identity; q=0.5, *;q=0

如果有多个Encoding同时匹配, 按照q值顺序排列,本例中按顺序支持gzip, identity压缩编码,支持gzip的浏览器会返回经过gzip编码的HTML页面。 如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。

9. Accept-Language(语言种类)

Accept-Langeuage:指出浏览器可以接受的语言种类,如en或en-us指英语,zh或者zh-cn指中文,当服务器能够提供一种以上的语言版本时要用到。

10. Accept-Charset(字符编码)

Accept-Charset:指出浏览器可以接受的字符编码。

举例:Accept-Charset:iso-8859-1,gb2312,utf-8

·       ISO8859-1:通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符,英文浏览器的默认值是ISO-8859-1.

·       gb2312:标准简体中文字符集;

·       utf-8:UNICODE 的一种变长字符编码,可以解决多种语言文本显示问题,从而实现应用国际化和本地化

如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受

GB2312 <GBK < GB18030

11.Cookie (Cookie)--重要

Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能,以后会详细讲。

12.Content-Type (POST数据类型)

Content-Type:POST请求里用来表示的内容类型

举例:Content-Type = Text/XML; charset=gb2312:

指明该请求的消息体中包含的是纯文本的XML类型的数据,字符编码采用“gb2312”。

内容类型:http://tool.oschina.net/commons


response 请求头

1.Cache-Control:must-revalidate,no-cache, private

这个值告诉客户端,服务端不希望客户端缓存资源,在下次请求资源时,必须要从新请求服务器,不能从缓存副本中获取资源。

Cache-Control是响应头中很重要的信息,当客户端请求头中包含Cache-Control:max-age=0请求,明确表示不会缓存服务器资源时,Cache-Control作为作为回应信息,通常会返回no-cache,意思就是说,"那就不缓存呗"。

当客户端在请求头中没有包含Cache-Control时,服务端往往会定,不同的资源不同的缓存策略,比如说oschina在缓存图片资源的策略就是Cache-Control:max-age=86400,这个意思是,从当前时间开始,在86400秒的时间内,客户端可以直接从缓存副本中读取资源,而不需要向服务器请求。

2.Connection:keep-alive

这个字段作为回应客户端的Connection:keep-alive,告诉客户端服务器的tcp连接也是一个长连接,客户端可以继续使用这个tcp连接发送http请求。

3.Content-Encoding:gzip

告诉客户端,服务端发送的资源是采用gzip编码的,客户端看到这个信息后,应该采用gzip对资源进行解码。

4.Content-Type:text/html;charset=UTF-8

告诉客户端,资源文件的类型,还有字符编码,客户端通过utf-8对资源进行解码,然后对资源进行html解析。通常我们会看到有些网站是乱码的,往往就是服务器端没有返回正确的编码。

5.Date: Tue, 03 Apr 2018 03:52:28 GMT

这个是服务端发送资源时的服务器时间,GMT是格林尼治所在地的标准时间。http协议中发送的时间都是GMT的,这主要是解决在互联网上,不同时区在相互请求资源的时候,时间混乱问题。

6.Expires:Sun, 1 Jan 2000 01:00:00 GMT

这个响应头也是跟缓存有关的,告诉客户端在这个时间前,可以直接访问缓存副本,很显然这个值会存在问题,因为客户端和服务器的时间不一定会都是相同的,如果时间不同就会导致问题。所以这个响应头是没有Cache-Control:max-age=*这个响应头准确的,因为max-age=date中的date是个相对时间,不仅更好理解,也更准确。

7.Pragma:no-cache

这个含义与Cache-Control等同。

8.Server:Tengine/1.4.6

这个是服务器和相对应的版本,只是告诉客户端服务器的信息

9.Transfer-Encoding:chunked

这个响应头告诉客户端,服务器发送的资源的方式是分块发送的。一般分块发送的资源都是服务器动态生成的,在发送时还不知道发送资源的大小,所以采用分块发送,每一块都是独立的,独立的块都能标示自己的长度,最后一块是0长度的,当客户端读到这个0长度的块时,就可以确定资源已经传输完了。

10.Vary: Accept-Encoding

告诉缓存服务器,缓存压缩文件和非压缩文件两个版本,现在这个字段用处并不大,因为现在的浏览器都是支持压缩的。

见的http状态码

100

客户端可以继续

101

指示服务器正根据 Upgrade 头切换协议

200

请求正常成功

201

指示请求成功并在服务器上创建了一个新资源

202

指示已接受请求进行处理但处理尚未完成

203

指示客户端呈现的元信息并不源自服务器

204

指示请求成功但没有返回新信息

205

指示代理应该 重置导致请求被发送的文档视图

206

指示服务器已完成对资源的部分 GET 请求

300

请求的资源对应于表示形式集合中的某种表示形式,每种表示形式都有自己的特定位置

301

指示已经将资源永久地移动到了某个新位置,并且将来的引用应将新 URI 用于其请求

302

指示已经将资源暂时地移动到了另一个位置,但将来的引用仍应使用原来的 URI 访问该资源。 保留此定义是为了向后兼容。SC_FOUND 现在是首选定义

303

指示可在另一个 URI 之下找到该请求的响应

304

指示条件 GET 操作发现资源可用但不可修改

305

指示必须 通过 Location 字段给定的代理访问请求资源

307

指示请求的资源暂时驻留在另一个 URI 之下。临时 URI 应该 通过响应中的 Location 字段提供

400

指示客户端发送的请求在语法上不正确

401

指示请求需要进行 HTTP 验证

402

保留此代码以备将来使用

403

指示服务器理解请求但拒绝完成它

404

指示请求的资源不可用

405

指示 Request-Line 中指定的方法不支持 Request-URI 标识的资源

406

指示请求标识的资源只能生成响应实体,根据请求中发送的 accept 头,这些响应实体具有不可接受的内容特征

407

指示客户端必须 首先通过代理验证其自身

408

指示客户端没有在服务器准备等待的时间内生成请求

409

指示由于与当前资源状态冲突请求无法完成

410

指示资源在服务器上不再可用并且不知道转发地址。应该 认为此条件是永久性的

411

指示在没有定义 Content-Length 的情况下无法处理请求

412

指示在服务器上测试一个或多个请求头字段中给出的前提时,该前提被求值为 false

413

指示因为请求实体大于服务器愿意或能够处理的实体,所以服务器拒绝处理请求

414

指示因为 Request-URI 的长度大于服务器愿意解释的 Request-URI 长度,所以服务器拒绝为请求提供服务

415

指示因为请求实体的格式不受请求方法的请求资源支持,所以服务器拒绝为请求提供服务

416

指示服务器无法服务于请求的字节范围

417

指示服务器无法服务于请求的字节范围

500

指示 HTTP 服务器内存在错误使服务器无法完成请求

501

指示 HTTP 服务器不支持完成请求所需的功能

502

指示 HTTP 服务器在充当代理或网关时从它参考的服务器接收到一个无效响应

503

指示 HTTP 服务器暂时过载,并且无法处理请求

504

指示服务器在充当网关或代理时没有从上游服务器接收到及时的响应

505  

指示服务器不支持或拒绝支持请求消息中使用的 HTTP 协议版本





猜你喜欢

转载自blog.csdn.net/qq_41654985/article/details/81014665