首部字段

1、HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器处理请求和响应提供了所必须的信息。

2、HTTP首部字段是由首部字段名和字段值构成,中间用冒号“:”隔开。字段值对应单个首部字段可以有多个值,用逗号“,”隔开。

3、根据实际用途,分为四种类型。

通用首部字段:请求报文和响应报文两方都会使用的首部。

请求首部字段:从客户端向服务器发送请求报文时使用的首部。

响应首部字段:从服务器向客户端返回响应报文时使用的首部。

实体首部字段:针对请求报文和响应报文的实体部分使用的首部。

4、HTTP/1.1协议定义了47种首部字段。

通用首部字段9种

请求首部字段19种

响应首部字段9种

实体首部字段10种

5、在HTTP协议通信交互中使用到的首部字段不限于RFC2616中定义的上面的47种,还有一些非正式的首部字段,比如Cookie、Set-Cookie和Content-Disposition等,统一归纳在RFC4229 HTTP Header Field Registrations中。

6、HTTP首部字段根据定义缓存代理和非缓存代理的行为分为两种类型:

端到端首部(End-to-end Header)

此类别中的首部会转发给请求/响应对应的最终接受目标,而且必须保存在由缓存生成的响应中,另外规定它必须被转发。

逐跳首部(Hop-by-hop Header)

此类别中的首部只对单次转发有效,会因通过缓存或代理而不再转发;http1.1和之后的版本,如要使用该首部,需提供Connection首部字段。

下面列举下HTTP/1.1中的逐跳首部字段,除了这8个,其他所有字段都属于端到端首部。

Connection、Keep-Alive、Proxy-Authenticate、Proxy-Authorization、Trailer、TE、Transfer-Encoding、Upgrade。

常见首部字段

虽然首部字段很多,但是常用的却没有那么多,这里列举下常用的首部字段,随时补充:

(1)User-Agent

属于请求首部字段,HTTP客户端程序的信息。

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1
User-Agent: Fiddler

首部字段 User-Agent 会将创建请求的浏览器和用户代理名称等信息传达给服务器。
由网络爬虫发起请求时,有可能会在字段内添加爬虫作者的电子邮件地址。此外,如果请求经过代理,那么中间也很可能被添加上代理服务器的名称。

(2)Content-Length

Content-Length: 15000

首部字段 Content-Length 表明了实体主体部分的大小(单位是字节)。对实体主体进行内容编码传输时,不能再使用 Content-Length 首部字段。

(3)Content-Type

Content-Type: text/html; charset=utf-8
Content-Type: application/json; charset=utf-8
Content-Type: application/octet-stream

首部字段 Content-Type 说明了实体主体内对象的媒体类型。和首部字段 Accept 一样,字段值用 type/subtype 形式赋值。
参数 charset 使用 ISO-8859-1 或 euc-jp 等字符集进行赋值。

下面是导出Excel需要使用的头部设置:

Content-Type: application/vnd.ms-excel; charset=utf-8 
Content-disposition:attachment; filename=xxxx.xls

form 表单的 enctype 属性和这个请求头 Content-Type 有关系。

(1)enctype属性可能的值:application/x-www-form-urlencoded | multipart/form-data | text/plain。属性默认值是:application/x-www-form-urlencoded。

application/x-www-form-urlencoded:表示普通的form表单元素提交,在发送前编码所有字符,提交的参数格式遵循:name=value&name=value&name=value...。

multipart/form-data:表示不对字符编码。直接提交二进制文件流。在使用包含文件上传控件的form表单时,必须使用该值。

text/plain:表示空格转换为 "+" 加号,但不对特殊字符编码。

(2)当我们使用form表单上传文件时post请求的时候,需要在form表单中添加enctype="multipart/form-data"属性。

请求头中有一个Content-type字段,会声明数据编码格式。浏览器会自动添加 Content-Type:multipart/form-data。

如果form中没有指定enctype,浏览器会自动添加默认的 Content-Type:application/x-www-form-urlencoded;charset=utf-8。

HTTP 协议常见首部字段的更多相关文章

  1. http协议(十)实体首部字段

    1.定义 包含在请求和响应中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息 2.Allow 通知客户端能够支持的Request-URI指定资源的所有http方法 如果服务器接收到不支 ...

  2. http协议(八)请求首部字段

    请求首部字段 定义:请求首部字段是从客户端到服务器发送请求报文中所使用的字段,里面包含了附加信息.客户端信息以及对响应内容相关的优先级等内容 1.Accept 通知服务器用户代理可处理的媒体类型及媒体 ...

  3. http协议(七)通用首部字段

    通用首部字段的意思,就是:请求和响应报文双方都会使用的首部 1.Cache-Control 通过指定它的指令,能操作缓存的工作机制 指令参数是可选的,多个指令通过“,”分隔 Cache-Control ...

  4. HTTP协议08-请求首部字段

    请求首部字段 请求首部字段是从客户端往服务器端发送请求报文中所使用的字段,用于补充请求的附加信息.客户端信息,对响应内容相关的优先级等内容 1)Accept 通知服务器,用户代理能够处理的媒体类型及媒 ...

  5. HTTP协议07-通用首部字段

    通用首部字段 通用首部字段是指,请求报文和响应报文双方都会使用的首部. 1)Cache-Control 通过指定首部字段Cache-Control的指令,就能操作缓存的工作机制. 指令的参数可以多选, ...

  6. http协议基础(七)通用首部字段

    通用首部字段的意思,就是:请求和响应报文双方都会使用的首部 1.Cache-Control 通过指定它的指令,能操作缓存的工作机制 指令参数是可选的,多个指令通过“,”分隔 Cache-Control ...

  7. http协议基础(八)请求首部字段

    请求首部字段 定义:请求首部字段是从客户端到服务器发送请求报文中所使用的字段,里面包含了附加信息.客户端信息以及对响应内容相关的优先级等内容 1.Accept 通知服务器用户代理可处理的媒体类型及媒体 ...

  8. http协议基础(十)实体首部字段

    1.定义 包含在请求和响应中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息 2.Allow 通知客户端能够支持的Request-URI指定资源的所有http方法:如果服务器接收到不支 ...

  9. HTTP协议图--HTTP 报文首部之首部字段(重点分析)

    1.首部字段概述 先来回顾一下首部字段在报文的位置,HTTP 报文包含报文首部和报文主体,报文首部包含请求行(或状态行)和首部字段. 在报文众多的字段当中,HTTP 首部字段包含的信息最为丰富.首部字 ...

随机推荐

  1. js处理日期

    /Date(-62135596800000)/ 如何用js转化为日期时间格式 2015-11-20 14:33:20像这样 var a = '/Date(-62135596800000)/' Date ...

  2. Visual Studio连接Oracle数据库

    一.安装Oracle Developer Tools for Visual Studio 2015 其他的什么client一概不要装,装了的直接卸载. 下载时需要登录,如果之前已经注册账号,提醒一下密 ...

  3. 错误 : 资产文件“项目\obj\project.assets.json”没有“.NETCoreApp,Version=v2.0”的目标。确保已运行还原,且“netcoreapp2.0”已包含在项目的 TargetFrameworks 中。

    升级 vs201715.6.3之后发布出现 错误 : 资产文件“项目\obj\project.assets.json”没有“.NETCoreApp,Version=v2.0”的目标.确保已运行还原,且 ...

  4. 20165213 周启航Exp2 后门原理与实践

    Exp2 后门原理与实践 实验内容 任务一 使用netcat获取主机操作Shell,cron启动 1.确认kali和主机的ip,关闭防火墙 (192.169.127.132) (10.1.1.197) ...

  5. springboot无法加载oracle驱动终极解决

    .ctrl+shirt+s .找到 Maven: com.oracle:ojdbc6: .找到classes 下的路径C:\Users\Administrator\.m2\repository\com ...

  6. JS生成URL二维码

    需求:项目中需要在UI界面有一个二维码,扫码后可以跳转到二维码包含的URL. 解决方案:在前端用js生成一个包含URL等信息的二维码. 实现: 方案一. <!DOCTYPE HTML PUBLI ...

  7. 刷机魅蓝note2

    直接上了. 情况: 魅蓝note2 公共版  忘记flyme 密码,手机号也换了,,找不回了..只能刷了.网上说就算刷了也不行,还是要输入flyme 密码 1. 直接刷官方的zip 包,不行,仍然要输 ...

  8. graph_base_pic_segmentation里面的细节和代码

    https://github.com/zhangbo2008/graph_base_pic_segmentation_analyzing/blob/master/README.md

  9. Object.defineProperty(obj,prop,descriptor)使用

    初步实现了数据自动映射到html中,动态修改对象数据也很自动更新到html.提供addProps方法-添加新增属性并初始化自动监听代码如下: 1.abserve.js:包含数据监听实现.类似jquer ...

  10. MongoDB学习记录(三) - MongoDB的"增查改删"操作之"查"

    查找使用的方法: db.collection.find() 查找所有文档 db.collection.find({})或者db.collection.find({}) 指定键值对 db.collect ...