• 常见的http请求头以及响应头


    一、 常用的http请求头

    1-1 Accept

    1、 Accept : text/html 浏览器可以接收服务器回发的类型为text/html
    2、 Accept: */*代表浏览器可以处理所有类型

    1-2 Accept-Encoding

    1、 Accept-Encoding: gzip,deflate 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)

    1-3 Accept-Language

    1-4 Connection

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

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

    1-5 Host (发送请求时,该报头域是必须)

    1、 Host: 请求报头域主要用于指定该请求资源的Internet主机和端口号,通常从HTTP URL中提取出来

    1-6 Referer

    1、 Referer: 当浏览器向Web服务器发送请求时,一般会带上Refer,告诉服务器从哪个页面链接过来的,服务器可以获得一些信息用于处理

    1-7 Cache-Control

    1、 Cache-Control :

    • Cache-Control:private : 默认为private 响应只能够作为私有的缓存,不能再用户间共享
    • Cache-Control:public** **响应会被缓存,并且在多用户间共享。正常情况, 如果要求HTTP认证,响应会自动设置为 private.
    • Cache-Control:must-revalidate 响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。
    • Cache-Control:no-cache 响应不会被缓存,而是实时向服务器端请求资源。
    • Cache-Control:max-age=10 设置缓存最大的有效时间,但是这个参数定义的是时间大小(比如:60)而不是确定的时间点。单位是[秒 seconds]。
    • Cache-Control:no-store在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。

    1-8 Cookie

    1、 Cookie是用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见)
    2、 例子: cookie会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个cookie来存储相关信息,这样浏览器通过读取cookie的信息去服务器上验证并通过后会判定你是合法用户从而允许查看相应网页。
    3、 还有很多信息可以存储是cookie里面,比如sessionid等。
    4、 document.cookie = "name='ntt'; path='/frontend';expires='';secure"

    1-9 Range(用于断点续传)

    二、 常用的http响应头

    2-1 Cache-Control

    • Cache-Control: private

      • 默认为private,响应只能作为私有的缓存,不能再用户间共享
    • Cache-Control:public

      • 浏览器 和 缓存服务器都可以缓存页面信息
    • Cache-Control: must-revalidate

      • 对于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时
    • Cache-Control: no-cache

      • 浏览器和缓存服务器都不应该缓存页面信息
    • Cache-Control : max-age = 10

      • 通知浏览器10s之内不要烦我,自己从缓冲区中刷新
    • Cache-Control:no-store

      • 请求和响应的信息都不应该被存储在对方的磁盘系统中

    2-2 Content-Type

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

    2-3 Content-Encoding

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

    2-4 Date

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

    2-5 Server

    1、Server:Tengine/1.4.6 : 这个是服务器和相对应的版本,只是告诉客户端服务器信息。

    2-6 Transfer-Encoding

    1、 Transfer-Encoding:chunked

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

    2-7 Expires

    1、 Expires:Sun, 1 Jan 2000 01:00:00 GMT :

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

    2-8 Last-Modified

    1、 Last-Modified: Dec, 26 Dec 2015 17:30:00 GMT

    • 所请求的对象的最后修改日期
    • 按照 RFC 7231 中定义的“超文本传输协议日期”格式来表示)

    2-9 Connection

    1、 Connection:keep-alive

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

    2-10 Refresh

    1、 Refresh: 用于重定向,或者当一个新的资源被创建时。默认会在5秒后刷新重定向。

    2-11 Access-Control-Allow-Origin

    1、 跨域请求配置

    2-12 Access-Control-Allow-Methods

    1、 Access-Control-Allow-Methods:GET,POST,PUT,DELETE : 允许哪些方法来访问

    2-13

    1、 Access-Control-Allow-Credentials

    • Access-Control-Allow-Credentials: true ,允许发送cookie。
    • Cookie不包括在CORS请求之中。
    • Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true
    • 如果服务器不要浏览器发送Cookie,删除该字段即可。如果access-control-allow-origin为*,当前字段就不能为true
  • 相关阅读:
    Docker容器搭建本地私有仓库
    Excel数据丢失怎么找回?详细恢复教程分享!
    【自动驾驶】浅谈自动驾驶在业界的发展
    【AUTOSAR-RTE】-4-Port和Interface以及Data Type
    云原生服务高可用性保持的简单思考
    Unity Shader 溶解效果
    207.Flink(二):架构及核心概念,flink从各种数据源读取数据,各种算子转化数据,将数据推送到各数据源
    华为云云服务器云耀L实例评测 | 从零到一:华为云云耀云服务器L实例上手体验
    QT+Python人脸表情特征识别
    【Spring】——5、@Lazy懒加载
  • 原文地址:https://blog.csdn.net/hannah2233/article/details/125911821