作者:知乎用户
链接:https://www.zhihu.com/question/42696895/answer/109035792
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最近研究了HTTP协议,所以在这里回答下这个问题,首先回答题主的问题,请求头有什么作用?我觉得请求头能反映给服务端以下信息:

1、请求类型
我们常见的请求类型有Get和Post两种,而这个信息在HTTP请求报文的第一行即请求行中就可以得到。

2、请求地址
请求地址告诉服务端当前请求来自哪里,例如"/"表示的是服务器根目录,对一个静态网站而言,如果存在index.html则它指向该网页;对一个动态网站而已,如果存在index.php则它指向该网页。

3、请求参数
客户端和服务器的通信最终是要落实到具体数据的传递上来的,所以通过请求报文我们能够获得客户端传递的参数并对其进行处理,通常Get类型参数在请求行、而Post类型参数在消息体中。

4、请求约束
如果说1、2、3是通信核心要素,那么接下来这些我们可以称其为细节要素。如题主所言,在客户端发起请求以后,到底服务端该以什么样的形式来返回给客户端?这部分内容定义在请求头部中,具体可以看下面的报文实例。

————————————————————
下面给出一段请求报文:

GET /?num1=23&num2=12 HTTP/1.1
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Language: zh-Hans-CN,zh-Hans;q=0.5
User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586
Accept-Encoding: gzip, deflate
Host: localhost:4040
Connection: Keep-Alive
Cookie: _ga=GA1.1.1181222800.1463541781

在这段报文中,它可以分为三部分,第一部分,请求行即第一行,在这里我们获得请求类型、请求参数、请求地址三个信息。

第二部分,我们称为请求头部,这里定义了如Accept、AccepLanguage等字段,这是我们这里所说的请求约束。

第三部分,消息体,它是一个可选的内容,和第二部分间有一个空行,当采用Post类型请求时这里将记录客户端传递的参数。

我觉得这样应该可以解答题主的问题了,关于头部字段具体表示什么含义,这些可以通过搜索引擎自己来了解,因为参数非常多啦,最后请允许我安利我最近写的关于HTTP的博客~\(≧▽≦)/~

http://qinyuanpei.com/2016/06/11/make-a-http-server-with-csharp-03.html

总而言之,这是一个客户端和服务端进行沟通的问题,双方按照各自的要求符合规律地去做好事情是我们期望的结果,可如果双方有一方想要任性你能有什么办法啊……

http 请求头部解析的更多相关文章

  1. 重大漏洞!PHP multipart/form-data头部解析远程拒绝服务漏洞

    "有些人看不懂,简单比喻来说吧:目前刚出的任何安全防护都不会拦,网站类专属漏洞 畸形数据包,2KB随机数据包,2M网速打死各种网站,cdn通挂!"PHP multipart/for ...

  2. 从零开始一个http服务器(二)-请求request解析

    从零开始一个http服务器 (二) 代码地址 : https://github.com/flamedancer/cserver git checkout step2 解析http request 观察 ...

  3. WebService如何封装XML请求 以及解析接口返回的XML

    原 WebService如何封装XML请求 以及解析接口返回的XML 置顶 2019年08月16日 15:00:47 童子泛舟 阅读数 28 标签: XML解析WebService第三方API 更多 ...

  4. PLAY2.6-SCALA(四) 请求体解析器

    一个http请求是一个请求头后面跟着一个请求体,头部信息比较短,可以安全的缓存在内存中,在Play中头部信息使用RequestHeader类进行建模.请求体的内容可能较大,使用流stream的形式进行 ...

  5. 一个简单的wed服务器SHTTPD(5)————服务器SHTTPD请求方法解析

    //start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191 ...

  6. 使用HttpClient来异步发送POST请求并解析GZIP回应

    .NET 4.5(C#): 使用HttpClient来异步发送POST请求并解析GZIP回应 在新的C# 5.0和.NET 4.5环境下,微软为C#加入了async/await,同时还加入新的Syst ...

  7. body-parser Node.js(Express) HTTP请求体解析中间件

    body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日     781     声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包 ...

  8. SpringBoot系列教程web篇之Post请求参数解析姿势汇总

    作为一个常年提供各种Http接口的后端而言,如何获取请求参数可以说是一项基本技能了,本篇为<190824-SpringBoot系列教程web篇之Get请求参数解析姿势汇总>之后的第二篇,对 ...

  9. SpringBoot系列教程web篇之Get请求参数解析姿势汇总

    一般在开发web应用的时候,如果提供http接口,最常见的http请求方式为GET/POST,我们知道这两种请求方式的一个显著区别是GET请求的参数在url中,而post请求可以不在url中:那么一个 ...

随机推荐

  1. 两个约束下的dp问题

    洛谷P1510 分析:本质上还是一个01背包,将体力当做重量,体积当做价值.配上滚动数组 即dp[j]代表在体力耗费为j时最大能搬运多少体积的石头,当dp[j]>v时就说明存在满足情况的解,这样 ...

  2. XXE漏洞

    原理:XML外部实体注入,简称XXE漏洞,XML数据在传输中数据被修改,服务器执行被恶意插入的代码.当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取.系统命令执行.内网端口探测.攻击内网 ...

  3. spring boot(五)Spring data jpa介绍

    在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...

  4. CSS3--难以想象的滤镜效果

    CSS 语法 filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate( ...

  5. .NET 高效开发之不可错过的实用工具(第一的当然是ReSharper插件)

    工欲善其事,必先利其器,没有好的工具,怎么能高效的开发出高质量的代码呢?本文为 ASP.NET 开发者介绍一些高效实用的工具,包括 SQL 管理,VS插件,内存管理,诊断工具等,涉及开发过程的各个环节 ...

  6. mysql 5.7版本的下载安装

    因为这次开发新的项目,需要用到mysql,因为之前用的都是oracle,所以学习下mysql的下载安装,在此留下一点记录,方便以后的回顾 一:mysql的下载地址:https://dev.mysql. ...

  7. Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)

    Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB).本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB).1. 配置CDB中的实例 ...

  8. ActiveMQ 事务和XA

    1. 客户端怎样显式地使用事务? producer 开启事务(代码片段): ActiveMQSession session = (ActiveMQSession)connection.createSe ...

  9. 使用web3+solc编译发布以太坊智能合约

    一.环境安装: 1.安装web3工程:npm install web3 2.安装solc工程:npm install solc二.在node环境中使用 先引用所需环境: var fs = requir ...

  10. git上传新建项目

    新建立本地项目,现在需要上传到git.对上传过程归纳如下: 一 在gitlab中新建项目:如下图所示: 二,新建后获取url地址,在本地打开gitbash,根据url把git上的项目clone到本地: ...