zoukankan      html  css  js  c++  java
  • http 请求头部解析

    作者:知乎用户
    链接: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的博客~(≧▽≦)/~

    总而言之,这是一个客户端和服务端进行沟通的问题,双方按照各自的要求符合规律地去做好事情是我们期望的结果,可如果双方有一方想要任性你能有什么办法啊……
  • 相关阅读:
    数据库访问优化之四:减少数据库服务器CPU运算
    数据库访问优化之三:减少交互次数
    数据库访问优化之二:返回更少的数据
    数据库访问优化之一:减少数据访问
    数据库性能优化
    磁盘映射
    strcmp
    程序设计基础
    Linux——【rpm、yun、源码包】安装
    Rsa2加密报错java.security.spec.InvalidKeySpecException的解决办法
  • 原文地址:https://www.cnblogs.com/hehexu/p/9249491.html
Copyright © 2011-2022 走看看