欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

http请求头和响应头

程序员文章站 2022-06-17 15:59:41
...

通用标头

请求和响应

Cache-Control

  • no-cache,服务器没有最新的则缓存里面获取,有最新则向服务器请求
  • no-store,不缓存,每次服务器接收到客户端的请求后,都会返回最新的资源给客户端
  • max-age,客户端发送max-age时,如果缓存服务器上的值小于max-age,那么返回缓存的数据,否则向服务器发送新的请求(max-age=0也是)

Cache-Control:no-cache

Cache-Control:max-age=60

Connection

浏览器与服务器的连接类型

Connection: keep-alive

当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

Connection: close

代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭:当客户端再次发送Request,需要重新建立TCP连接

Date

日期 时间,是格林威治时间,比北京时间慢八小时

Pragma

只用于客户端发送请求中,客户端会要求所有的中间服务器不返回缓存的资源

http1.1之前不使用缓存

  • Cache-Control:no-cache
  • Pragma:no-cache

如果所有的中间服务器都实现http1.1,那么直接Cache-Control:no-cache

Trailer

Transfer-Encoding

Upgrade

Via

Warning

请求头

Accept

客户端能够接收的MIME类型是什么

Multipurpose Internet Mail Extensions是描述消息内容类型的英特网标准

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

q表示权重,1.0默认不写

Accept-Encoding

客户端能够处理的的压缩编码。通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是指字符编码)

Accept-Encoding: gzip, deflate, br

Accept-Language

客户端需要服务端返回的语言

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

Accept-Charset

客户端能接受的字符集

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

Expect

From

If-Match

If-None-Match

If-Range

If-Unmodified-Since

Max-Forwards

Proxy-Authorization

Range

TE

Host

发送请求的页面的域名。(发送请求时,该报头域是必需的),请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的

我们在浏览器中输入:http://www.hzau.edu.cn,浏览器发送的请求消息中,就会包含Host请求报头域,如下:

Host:www.hzau.edu.cn,此处使用缺省端口号80,若指定了端口号,则变成:Host:指定端口号

例如:localhost:8080

Referer

告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理

防盗链处理

User-Agent

浏览器的用户代理字符串。告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4651.0 Safari/537.36

Authorization

通常用在服务器以401未经授权状态和WWW-Authenticate:Basic

告知客户端需要认证信息

Cookie

响应标头

Age

告诉客户端源服务器在多久之前创建了响应,单位s,Age通常接近0,如果是0则可能是从源服务器获取的,如果不是,表示可能是由代理服务器创建,那么Age的值表示的是缓存后的响应再次发起认证到认证完成的时间值。代理创建响应时必须加上Age

Age:24

ETag

条件请求就是根据ETag的值进行匹配的

特定版本的标识,它能够缓存变得更高效并能够节省宽带,因为如果缓存内容未发生变化,web服务器则不需要重新发送完整的响应,ETag能够防止资源同时更新互相覆盖

给定URL的资源变化了,必须生成一个新的ETag值

  • 强ETag

    ETag: “33a64df551425fcc55e4d42a148795d9f25f89d4”

  • 若ETag
    ETag: W/“0815”

location

表示重定向的URL

Proxy-Authentication

表示客户端与代理之间认证

  • Proxy-Authentication:Basic
  • Proxy-Authentication:Basic realm = “Access to the internal site”

WWW-Authentication

401

  • WWW-Authentication:Basic
  • WWW-Authentication:Basic realm=“Access to the staging site”, charset=“UTF-8”

Retry-After

告知客户端需要多久重新发送请求

有三种情况

  1. 当发送503(服务不可用),服务预计多长时间不可用
  2. 当发送429(请求太多),发出新请求要等多长时间
  3. 当发送重定向的响应像是301(永久移动),发出重定向请求之前要求客户端等待的最短时间

形式:

  1. Retry-After:Mon, 04 Oct 2021 13:21:05 GMT
  2. Retry-After:120 (单位是秒)

Server

服务器

Server:Apache/2.4.1(UNIX)

Vary

确定如何匹配请求标头,以决定是否可以使用缓存的响应,而不是从服务器请求一个新的响应

比如Vary: Accept-Encoding,User-Agent,那么Accept-Encoding与User-Agent两个请求头的内容,就会作为判断是否返回缓存数据的依据,当缓存服务器中相同请求的缓存数据的编码格式、代理服务与当前请求的编码格式、代理服务一致,那就返回缓存数据,否则就会从服务器重新获取新的数据

Access-Control-Allow-Origin

告诉浏览器允许该来源访问资源

Access-Control-Allow-Origin:https://mozilla.org,表示允许源https://mozilla.org访问资源

如果服务器指定单个来源而不是*的话,还应在Vary加上Origin 即 Vary:Origin

实体标头

用于请求和响应中

Allow

405 Method Not Allowed,就是客户端和服务端的请求类型不一致

Allow:GET,POST,HEAD

Content-Type

具体查看httpclient的使用

Content-Encoding

上面说了,Accept-Encoding是客户端希望返回的内容编码,但是实际上服务端返回给客户端的内容编码是根据,Content-Encoding来返回的

Content-Language

服务端用的语言

Content-Length

服务器发送给客户端的实体大小,以字节为单位

Content-Length:3000,总共3000字节

Content-Range

告知客户端响应实体的哪部分是符合客户端请求的,以字节为单位

Content-Range:bytes 200 - 1000/67589

表示从所有67589字节中,返回200-1000字节的内容

Content-Location

表示用于访问资源的直接URL,无需进一步的内容协商

Content-MD5

客户端会对接收的报文主体执行相同的MD5算法,然后与首部字段Content-MD5字段进行比较,

目的在于检查报文主体在传输过程中是否保持完整,有无被修改的情况,以及确认传输到达

Expires

返回的日期,如果在该日期之后,则响应过期

是http1.0的字段,现在浏览器默认使用的是http1.1

如果是因为时区原因或者客户端或服务端有一方的时间不准确,则缓存就直接失效了

Last-Modified

资源最后的修改时间,它用作验证器来确定接收或存储的资源是否相同。它的作用不如ETag那么准确

相关标签: http tcp/ip