http请求头和响应头
通用标头
请求和响应
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
告知客户端需要多久重新发送请求
有三种情况
- 当发送503(服务不可用),服务预计多长时间不可用
- 当发送429(请求太多),发出新请求要等多长时间
- 当发送重定向的响应像是301(永久移动),发出重定向请求之前要求客户端等待的最短时间
形式:
- Retry-After:Mon, 04 Oct 2021 13:21:05 GMT
- 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那么准确
上一篇: Mac下Android开发环境搭建
下一篇: 学习Angularjs分页指令
推荐阅读
-
HTTP标准的请求和响应_MySQL
-
为你详细解读HTTP请求头的具体含意,解读请求含意_PHP教程
-
我要直接读取请求的信息头,我要怎么做?
-
php下载文件,添加响应头的简单实例
-
Spring-Security对HTTP相应头的安全支持
-
springboot部署到阿里云,配置https,springboot项目同时支持http和https请求,阿里云配置https
-
x-requested-with 请求头 区分ajax请求还是普通请求 博客分类: Ajax ajax
-
HTTP头详解 博客分类: web前端 http协议头
-
C语言 带有头结点的循环双链表的实现和相关操作。
-
C语言 带有头结点的循环单链表的实现和相关操作。