感谢大佬:https://itbilu.com/other/relate/E1T0q4EIe.html

HTTP协议将传输的信息分隔为两部分:HTTP信息头、HTTP信息体。通过HTTP头信息,使客户端请求服务器资源或服务器响应客户端请求时,可以传递额外的信息。HTTP头信息格式为名称:值,名称不区分大小写,如:Content-Type: text/html。通过HTTP消息头,可以使服务器或客户端了解对方所使用的协议版本、内容类型、编码方式等。

  1. HTTP消息头分类
  2. 一些有用的请求头
  3. 一些有用的响应头

1. HTTP消息头分类

在HTTP消息头中,有些是客户端特有的,有些是服务端所特有的,也有些是消息头是通用的。按HTTP消息头出现的上下文环境,有以下分类:

1.1 通用头

HTTP消息头中,有些既适用于客户端的请求头,也适用于服务端的响应头,与HTTP消息体内最终传输的数据是无关的,只适用于要发送的消息。这些消息头由于HTTP协议版本的不同可能会有所区别,在HTTP/1.1中,这些消息头有:Cache-Control:Connection:Date:Pragma:Trailer:Transfer-Encoding:Upgrade:Via:Warning:

1.2 请求头

HTTP 请求头为所请求的资源或请求本身,提供了更为精确的描述信息。其中有些缓存相关头描述了缓存信息,这些头会改变GET请求时获取资源的方式,如:If-Modified-Since。有些消息头描述了用户偏好,如: Accept-LanguageAccept-Charset表示客户端所使用语言及编码方式、User-Agent表示客户端的代理方式。

新增加的请求头不能在旧的HTTP版本中使用,但是,如果服务器和客户端都能对相关头进行处理,就可以在请求中使用。在这种情况下,客户端不应该假定服务器有对相关头的处理能力。未知的请求头被处理为实体头。

1.3 响应头

HTTP 响应头为响应消息提供了更多信息。如,关于资源位置的描述Location:,关于务器本身的描述使用Server:

新增加的响应头不能在旧的HTTP版本中使用,但是,如果服务器和客户端都能对相关头进行处理,就可以在响应中使用。在这种情况下,服务器不应该假定客户端有对相关头的处理能力。未知的响应头被处理为实体头。

1.4 实体头

HTTP 实体头提供了关于消息体的描述。如,消息体的长度Content-Length:,消息体的MIME类型Content-Type:。新的实体头可以旧HTTP版本中使用。

HTTP消息头也可以按缓存与百缓存的处理方式分分类:

1.5 端到端(End-To-End)头

End-To-End头信息必须发送到消息的最终接收人,即:接收请求消息的服务器或接收响应消息的客户端。这些头信息意味着中间代理必须重发未修改的内容,也必须存储缓存。

End-To-End头在一个路由器连接的两种物理网络中使用,即:OSI的应用层和运输层。

1.6 逐跳(Hop-By-Hop)头

Hop-By-Hop头被单一的传输层连接使用,Hop-By-Hop头标识传输内容不得通过代理或缓存转发。这些头信息有:Connection:Keep-Alive:Proxy-Authenticate:Proxy-Authorization: TE:Trailers:Transfer-Encoding:Upgrade:。注意,只有Hop-By-Hop头可能会设置使用Connection: 通用头。

2. 一些有用的请求头

众多的HTTP请求头中,有几个是特别有用且应当正确设置的。如果你要创建HTTP请求,如,创建XMLHttpRequest或一个延时写入并通过XPCOM发送自定义的HTTP请求时,这时确保正确写入请求头就非常重要,进行这些操作时,用户使用浏览器一般自动写入请求头。

2.1 控制所访问资源的语言

大多数用户所使用的浏览器客户端,如:Firefox,都允许用户设置所偏好的语言,设置后浏览器会在发送请求时添加一个Accept-Language: 头信息。而服务器,在收到HTTP请求时,也可以根据这个头信息返回对应语言的资源。

2.2 有条件GET请求

缓存是提高网站访问速度的重要方式,当使用XMLHttpRequest进行部分页面数据的刷新时,使用If-Modified-Since:头信息会告诉服务器,访问更新过的内容,可以有效的提高访问效率。

3. 一些有用的响应头

正确的配置网站服务器,是保证网站性能和安全的关键。在众多的HTTP响应头中,有几个响应头是比较重要性且应当配置在服务器中。

3.1 框架(frame)控制

几个跨站脚本(XSS)攻击,就是利用第三方框架(frameiframe)。现代浏览器已经支持CSPframe-ancestors指令,在服务器端将其设置为"none",可以有效访止浏览器在框架内显示该资源,使用它的关键资源(如:表单数据或关键信息)可以有效减少XSS攻击风险。注意,这个响应头并不是缓解XSS风险的唯一途径,也可通过一些内容安全策略实现。

3.2 数据压缩

最大限度地减少传输的数据量,可以有效加速了网页的显示。虽然可以通Gulp等工具,将静态文件数据压缩。但如果要压缩传输数据,那么必须在Web服务器级别进行相关配置。设置后,客户端会发送一个Accept-Encoding:头,告诉服务器所接受的编码方式;而服务器也会响应一个Content-Encoding:头,告诉客户端所使用的压缩方式。

注:Nginx服务器可以通过配置Gzip实现数据压缩。

3.3 缓存控制

HTTP缓存是提高网站访问速度另一种有效方式,它可防止同一未修改资源被多次访问。正确的配置服务器的响应头,可以使用户代理(浏览中器)充分缓存数据。

配置缓存时,需要设置以下项:

  • 任何静态资源都应该提供了一个Expires:响应头。这样,资源可以用户代理达到它自身限制前(如:达到缓存大小限制),充分的缓存数据。
  • 任何动态资源都应该提供了一个Cache-control:响应头。理论上讲,所有安全的HTTP方法(GET、HEAD)甚至幂等方法(DELETE、PUT),都可以配置缓存,但在实际使用中会有一些问题。

3.4 设置MIME类型

MIME类型响应头Content-type会告诉客户端传输文档的类型,扩展名在文档的网络传中已经失去意义。正确配置服务器此项设置,对文件传输非常重要,用户代理客户端经常通过MIME类型判断文档的打开方式或获取资源后的默认动作。

HTTP消息头(HTTP headers)-HTTP请求头与HTTP响应头的更多相关文章

  1. 【转载】curl 模拟 GET\POST 请求,curl查看响应头 以及 curl post 上传文件

    补充说明:curl查看响应头 curl -I "http://www.baidu.com"HTTP/1.1 200 OK #HTTP协议 HTTP 返回码Server: Tengi ...

  2. WEB安全防护相关响应头(上)

    WEB 安全攻防是个庞大的话题,有各种不同角度的探讨和实践.即使只讨论防护的对象,也有诸多不同的方向,包括但不限于:WEB 服务器.数据库.业务逻辑.敏感数据等等.除了这些我们惯常关注的方面,WEB ...

  3. Android Http请求头与响应头的学习

    本节引言: 上节中我们对Android涉及的网络编程进行了了解,也学习了下Http的基本概念,而本节我们 要学习的是Http的请求头与响应头,当然,可以把也可以把这节看作文档,用到的时候来查查 即可! ...

  4. HTTP协议扫盲(二)HTTP协议的请求方法、请求头和响应头

    一.HTTP请求方法 Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST ...

  5. http 请求头和响应头

    客户端发送请求过程带着的数据: 1.请求地址 2.请求方式 3.请求头 request headers 4.请求参数 https://www.juhe.cn/ 130.... 1a2b....pei ...

  6. http状态码 以及请求响应头相关

    1xx消息[编辑] 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非 ...

  7. HTTP 请求头 & 响应头

    HTTP请求头概述 HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST).如有必要,客户程序还可以选择发送其他的请求头.大多数请求头并不是必需的, 但Co ...

  8. Http请求头和响应头(Get和Post)

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

  9. HTTP请求的基本概念 HTTP请求头和响应头的含义

    1,HTTP请求的基本概念    TCP/UPD/HTTP    *2,HTTP请求头和响应头的含义  请求头:  Accept: text/html,image/*(浏览器可以接收的类型)  Acc ...

  10. http协议----->请求头和响应头

    http实用头字段-----Range 如果请求里有这个range头,那么响应里也有 1.首先在webroot下放好a.txt 内容如下: 2.然后在本地有个下载未完成的a.txt 本地a.txt内容 ...

随机推荐

  1. A Tutorial on Energy-Based Learning

    目录 概 主要内容 损失函数 Energy Loss Generalized Perceptron Loss Generalized Margin Loss Hinge Loss Log Loss L ...

  2. 编写Java程序,将JButton按钮按网格布局管理器格式放置

    返回本章节 返回作业目录 需求说明: 将JButton按钮按网格布局管理器格式放置 实现思路: 实现代码: public void init(){ setLayout(new GridLayout(4 ...

  3. WinForm应用程序的开机自启、记住密码,自动登录的实现

    一.思路: 1.开机自启,自然是需要用到注册表,我们需要把程序添加到电脑的注册表中去 2.记住密码,自动登录,开机自启,在页面的呈现我们都使用复选框按钮来呈现 3.数据持久化,不能是数据库,可以是sq ...

  4. Debug解决问题方法论

    发现问题怎么办,如何处理, 所谓的Debug的一般流程是什么, 下面是我对此的一些思考总结, 后面还会继续完善补充. 1.处理思路总纲 发现问题 查看日志 没有日志,去找日志 找不到日志,继续找,有些 ...

  5. 图解MySQL:count(*) 、count(1) 、count(主键字段)、count(字段)哪个性能最好?

    大家好,我是小林. 当我们对一张数据表中的记录进行统计的时候,习惯都会使用 count 函数来统计,但是 count 函数传入的参数有很多种,比如 count(1).count(*).count(字段 ...

  6. [vscode] os.getcwd(),调试和命令行运行的结果不一致

    问题描述: 调试和命令行运行的时候工作目录不一致 这会导致一个问题,我想从上级目录导入模块的话,F5调试就会找不到模块,而命令行则没问题 那么我该如何调试呢? 目录结构: top  └ folder_ ...

  7. .NET对接极光消息推送

    什么是APP消息推送? 很多手机APP会不定时的给用户推送消息,例如一些新闻APP会给用户推送用户可能感兴趣的新闻,或者APP有更新了,会给用户推送是否选择更新的消息等等,这就是所谓的"消息 ...

  8. C# 季节判断

    编写一个控制台应用程序,可根据输入的月份判断所在季节. 代码如下 using System; using System.Collections.Generic; using System.Linq; ...

  9. elasticsearch算法之词项相似度算法(一)

    一.词项相似度 elasticsearch支持拼写纠错,其建议词的获取就需要进行词项相似度的计算:今天我们来通过不同的距离算法来学习一下词项相似度算法: 二.数据准备 计算词项相似度,就需要首先将词项 ...

  10. vue学习16-插槽的使用

    <!DOCTYPE html> <html lang='en'> <head>  <meta charset='UTF-8'>  <meta ht ...