下面总结一下平时web开发中,HTTP请求的相关过程以及重要的参数意义

一次完整的HTTP请求所经历的7个步骤

说明:HTTP通信机制是在一次完整的HTTP通信过程中,web浏览器与web服务器之间将完成下列7个步骤:

       1.  建立TCP连接

       2.  Web浏览器向web服务器发送请求命令  例如:GET /sample/hello.jsp HTTP 1.1

       3.  Web浏览器发送请求头信息

       4.  Web服务器应答  例如:HTTP/1.1 200 ok

       5.  Web服务器发送应答头信息

       6.  Web服务器向浏览器发送数据

       7.  Web服务器关闭TCP连接

一、General  Headers 通用信息头

  既能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头。

  HTTP中的请求头和响应头属性解析  

       1.  Request  URL      请求的地址

       2.  Request  Method    请求的方法类型

       3.  Status  Code      响应状态码

       4.  Remote  Address    表示远程服务器地址       

       5.  Referrer Policy 

        rel 属性只能定制单个元素的Referer行为,而且选择比较少,只能发送或不发送。W3C 为此制定了更强大的 Referrer Policy。

        Referrer Policy 可以设定8个值。

        1)no-referrer   不发送Referer字段。

        2)no-referrer-when-downgrade

        如果从 HTTPS 网址链接到 HTTP 网址,不发送Referer字段,其他情况发送(包括 HTTP 网址链接到 HTTP 网址)。这是浏览器的默认行为。

        其他的值,这里就不做介绍了,感兴趣的可以自行查看相关资料。

二、Response Headers   响应头

 HTTP中的请求头和响应头属性解析

    1.  Content-Length   响应体的长度

    2.  Content-type     返回的响应MIME类型与编码:告诉浏览器它发送的数据属于什么文件类型   

    3.  Cache-control    指定请求和响应遵循的缓存机制

    1)public 响应可被任何缓存区缓存

    2)private 对于单个用户的整个或部分响应消息,不能被共享缓存处理

    3)no-cache 表示请求或响应消息不能缓存

    4.  date         原始服务器消息发出的时间

    5.  Server        web服务器软件名称

    6.  Last-Modified   标记请求的资源在服务器端最后被修改的时间

三、Request  Headers  请求头

      HTTP中的请求头和响应头属性解析 

       1.   Accept        告诉服务器可以接受的文件格式。根据Accept头的不同,按照相应的顺序进行produces的匹配。

       2.   Accept-Encoding  gzip,deflate,sdch,br 指定浏览器可以支持的web服务器返回的内容压缩编码类型

       3.   Accept-Language  浏览器支持的语言

       4.   Cache-Control   指定请求和响应遵循的缓存机制

       5.   Connection     keep-alive 表示是否需要持久连接

       6.   Cookie        HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器

       7.   Host         指定请求的服务器的域名和端口号

       8.   Referer       告诉服务器是从哪个网站链接过来的,提供访问来源的信息

       1) 拼写问题

      Referer的正确拼写是Referrer,但是写入标准的时候,不知为何,没人发现少了一个字母r。标准定案以后,只能将错就错,所有头信息的该字段都一律错误拼写成Referer。

       2)可选字段

         这个字段是可选的。客户端发送请求的时候,自主决定是否加上该字段。浏览器提供一系列手段,允许改变默认的Referer行为。

         对于用户来说,可以改变浏览器本身的全局设置,也可以安装浏览器扩展。这里就不详细介绍了。

         对于开发者来说,rel="noreferrer"属性是最简单的一种方法。<a>、<area>和<form>三个标签可以使用这个属性,一旦使用,该元素就不会发送Referer字段。

       3)应用场景

一个典型的应用是,防盗链:有些网站不允许图片外链,只有自家的网站才能显示图片,外部网站加载图片就会报错。它的实现就是基于Referer字段,如果该字段的网址是自家网址,就放行。

       4)不适合使用的情况

        由于涉及隐私,很多时候不适合发送Referer字段。

         这里举两个例子,都不适合暴露 URL。一个是功能 URL,即有的 URL 不要登录,可以访问,就能直接完成密码重置、邮件退订等功能。另一个是内网 URL,不希望外部用户知道内网有这样的地址。Referer字段很可能把这些 URL 暴露出去。

       9.   User-Agent     用户代理:简称UA。内容包含发出请求的用户信息,使得服务器能够识别客户端使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、插件等。

       10.  Authorization   当客户端访问受口令保护时,服务器端会发送401状态码和www-authenticate 响应,要求客户端使用Authorization来应答HTTP中的请求头和响应头属性解析 

 

参考链接:

http://www.ruanyifeng.com/blog/2019/06/http-referer.html

 

相关文章: