HTTP请求头和响应头

本文详细介绍了HTTP请求头和响应头中的关键字段,包括Accept、Cookie、Authorization、ETag、Set-Cookie等,解释了它们的作用和应用场景,帮助理解HTTP通信过程中的数据交换机制。

请求头

Accept:浏览器可接受的MIME类型。

就是希望服务器返回什么类型的数据,比如application/json,text/html,image/png,*/*

Accept:application/json, text/javascript, */*; q=0.01

q是Quality values,权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容,若没有指定 q 值,则默认为1,若被赋值为0,则用于提醒服务器哪些是浏览器不接受的内容类型

Accept-Charset:浏览器可接受的字符集。

Accept-Charset: utf-8, iso-8859-1;q=0.5, *;q=0.1

Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 

Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1

 Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。

Accept-Language: zh-CN,zh;q=0.9

Access-Control-Request-Headers :出现于 preflight request (预检请求)中,用于通知服务器在真正的请求中会采用哪些请求头。

Access-Control-Request-Headers: X-PINGOTHER, Content-Type 

 Access-Control-Request-Method :出现于 preflight request (预检请求)中,用于通知服务器在真正的请求中会采用哪种  HTTP 方法。因为预检请求所使用的方法总是 OPTIONS ,与实际请求所使用的方法不一样,所以这个请求头是必要的。

Access-Control-Request-Method: POST 

Authorization:授权信息,通常会在服务器返回401 Unauthorized 状态码以及WWW-Authenticate 消息头之后在后续请求中发送此消息头。

Authorization: <type> <credentials>

A sequence diagram illustrating HTTP messages between a client and a server lifeline.

Cookie:这是最重要的请求头信息之一

Cookie: name=value; name2=value2; name3=value3 

From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 

From: webmaster@example.org

Host:指明了请求将要发送到的服务器主机名和端口号。如果没有包含端口号,会自动使用被请求服务的默认端口(比如HTTPS URL使用443端口,HTTP URL使用80端口)。

Host: www.baidu.com

If-Match:这是一个条件请求首部。在请求方法为 GET 和 HEAD 的情况下,服务器仅在请求的资源的 ETag值和If-Match的值一致时才会返回资源。否则返回412 Precondition Failed(先决条件失败)。而对于 PUT 或其他非安全方法来说,只有在满足条件的情况下才可以将资源上传。

If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"

If-None-Match:这是一个条件式请求首部。对于 GET 和 HEAD 请求方法来说,当且仅当服务器上没有任何资源的 ETag 属性值与If-None-Match的值一致的时候,服务器端才会返回所请求的资源,响应码为 200 。对于其他方法来说,也是没有值一致的时候,才会对请求进行相应的处理。

If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d" 

If-Modified-Since:只有当所请求的内容在If-Modified-Since指定的日期之后又经过修改,才返回它(200状态码),否则返回304“Not Modified”应答。

If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT

If-Unmodified-Since:条件式请求首部。只有当资源在指定的时间之后没有进行过修改的情况下,服务器才会返回请求的资源,或是接受 POST 或其他 non-safe 方法的请求。如果所请求的资源在指定的时间之后发生了修改,那么会返回 412 (Precondition Failed) 错误。

例如在某些wiki应用中的做法:假如在原始副本获取之后,服务器上所存储的文档已经被修改,那么对其作出的编辑会被拒绝提交

If-Unmodified-Since: Wed, 21 Oct 2015 07:28:00 GMT

Origin:指示了请求来自于哪个站点。该字段仅指示服务器名称,并不包含任何路径信息。

Origin: https://developer.mozilla.org 

Referer:当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。 

Referer: https://developer.mozilla.org/en-US/docs/Web/JavaScript


响应头

 Access-Control-Allow-Credentials: 响应头表示是否可以将对请求的响应暴露给页面。返回true则可以,其他值均不可以。

Access-Control-Allow-Credentials: true

Access-Control-Allow-Headers :用于 preflight request (预检请求 OPTIONS请求)中,列出了将会在正式请求的 Access-Control-Request-Headers 字段中出现的首部信息。 

Access-Control-Allow-Headers: X-Custom-Header, Upgrade-Insecure-Requests

Access-Control-Allow-Methods: 在对 preflight request(预检请求)的应答中明确了客户端所要访问的资源允许使用的方法或方法列表。 

Access-Control-Allow-Methods: POST, GET, OPTIONS

Access-Control-Allow-Origin: 指定了该响应的资源是否被允许与给定的origin共享。

Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: https://developer.mozilla.org

Access-Control-Max-Age :表示 preflight request  (预检请求)的返回结果(即 Access-Control-Allow-Methods 和Access-Control-Allow-Headers 提供的信息) 可以被缓存多久(单位秒)。

Access-Control-Max-Age: 600  

Clear-Site-Data:表示清除当前请求网站有关的浏览器数据(cookie,存储,缓存)。它让Web开发人员对浏览器本地存储的数据有更多控制能力。

// 登出时清除所有本地存储诗句

Clear-Site-Data: "cache", "cookies", "storage", "executionContexts" 

ETag:资源的特定版本的标识符。比较ETag能快速确定此资源是否变化,这可以让缓存更高效,并节省带宽,因为如果内容没有改变,Web服务器不需要发送完整的响应

ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4" 

Expires:在此日期/时间之后,响应过期,如cookie过期。
无效的日期,比如 0, 代表着过去的日期,即该资源已经过期。
如果在Cache-Control响应头设置了 "max-age" 或者 "s-max-age" 指令,那么 Expires 头会被忽略。 

Expires: Wed, 21 Oct 2015 07:28:00 GMT

Set-Cookie:服务器端设置客户端的 cookie。

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly


通用首部

 Cache-Control :通用消息头字段,被用于在http请求和响应中,通过指定指令来实现缓存机制。缓存指令是单向的,这意味着在请求中设置的指令,不一定被包含在响应中。

Cache-control: no-cache

Cache-Control: max-age=<seconds>

Connection:表示是否需要持久连接。如果该值是“keep-alive”,网络连接就是持久的,不会关闭,使得对同一个服务器的请求可以继续在该连接上完成。

Connection: keep-alive
Connection: close

Keep-Alive:允许消息发送者暗示连接的状态,还可以用来设置超时时长和最大请求数。需要将 The Connection 首部的值设置为  "keep-alive" 这个首部才有意义

// timeout:指定了一个空闲连接需要保持打开状态的最小时长(以秒为单位)

// max:在连接关闭之前,在此连接可以发送的请求的最大值

Keep-Alive: timeout=5, max=1000 

Date :包含了报文创建的日期和时间。

Date: Wed, 21 Oct 2015 07:28:00 GMT 

Last-Modified:服务器认定的资源做出修改的日期及时间。 它通常被用作一个验证器来判断接收到的或者存储的资源是否彼此一致。

Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT

Location:页面重定向的地址。一般在响应码为3xx的响应中才会有意义。

 Location: /index.html


实体报头

Content-Encoding:用于对特定媒体类型的数据进行压缩

Content-Encoding: gzip

Content-Language :用来说明访问者希望采用的语言或语言组合,这样的话用户就可以根据自己偏好的语言来定制不同的内容。

Content-Language: de-DE, en-CA

Content-Length:指明发送给接收方的消息主体的大小,即用十进制数字表示的八位元组的数目。

Content-Length: <length>

Content-Type:用于指示资源的MIME类型 。

Content-Type: text/html; charset=utf-8


 参考:HTTP Headers - HTTP | MDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值