zoukankan      html  css  js  c++  java
  • HTTP请求报文

    TCP三次握手后,客户端会向服务器发出一个请求报文。

    请求报文的组成部分

    一个HTTP请求报文由四部分组成:请求行、请求头、空行和请求数据。

    1.请求行由请求方法字段、URL字段和HTTP协议版本字段组成

    2.请求头

    常见属性:
    Referer:表示这个请求是从那个url调过来的
    Accept:告诉服务端,该请求所能支持的响应数据类型(MIME Type)
    if-Modified-Since:通知服务器,本地缓存的最后变更时间
    Cookie:客户端可以通过这个头向服务器带数据
    User-Agent:用户标识,浏览器通知服务器,客户端浏览器与操作系统相关信息
    Connection:表示客户端与服务连接类型;Keep-Alive表示持久连接,close已关闭
    Host:请求的服务器主机名
    Content-Length:请求体的长度
    Content-Type:请求的与实体对应的MIME信息
    Accept-Encoding:浏览器通知服务器,浏览器支持的数据压缩格式
    Accept-Language:浏览器通知服务器,浏览器支持的语言
    Cache-Control:指定请求和响应遵循的缓存机制
    查看详情

    3.空行

    它的作用是通过一个空行,告诉服务器请求头部到此为此。

    4.请求数据

    如果方法字段是GET,则此项为空,没有数据
    如果方法字段是POST,则通常来说此处放置的就是要提交的数据。
    例如POST提交表单:user=admin&password=123.

    上图是POST请求报文,如果是GET请求的话,报文体为空。

    POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点,通过POST方法提交表单数据时,数据不是作为URL的一部分而是作为标准数据传送网络服务器,这就克服了GET方法中的信息无法保密的缺点。

    GET和POST区别

    1.参数传递方式不同。

    GET请求时,参数会拼接到URL的后面,参数之间以&相连,请求参数会暴露在浏览器中
    POST请求时,参数会放到HTTP请求体中,对于用户是不可见的。(也并非绝对不可见,Chrome的开发者模式或者抓包都可以看到POST的请求数据)

    2.URL长度不同。

    浏览器规定GET请求URL长度不能大于2000个字符
    POST请求URL长度不能大于4M
    (不同的浏览器和服务器限制长度不一样)

    3.数据包不同

    GET请求时产生一个TCP数据包,请求的header和data一起发送出去,服务端返回具体的响应码
    POST请求时,产生两个TCP数据包。先发送header信息,服务端响应100然后continue,浏览器再发送data信息,服务端响应具体的状态码。(火狐浏览器post请求只发一次请求包)

    此外,从应用层次出发
    点击刷新或返回按钮时,GET方法无影响,POST会重新请求数据
    GET可以添加书签,POST不可以
    GET有缓存,POST没有
    GET有历史记录,post没有
    GET只允许ASCII字符类型,POST没有限制

  • 相关阅读:
    51nod 1134 最长递增子序列
    51nod 1135 原根
    51nod 1136 欧拉函数
    51nod 1137 矩阵乘法
    51nod 1174 区间中最大的数
    51nod 1079 中国剩余定理
    51nod 1181 质数中的质数(质数筛法)
    伪共享(False Sharing)和缓存行(Cache Line)
    mybatis 批量 操作数据
    java开发中beancopy比较
  • 原文地址:https://www.cnblogs.com/dearnotes/p/12358944.html
Copyright © 2011-2022 走看看