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没有限制

  • 相关阅读:
    Oracle11gR2 INDEX FAST FULL SCAN 成本计算
    SELECT MIN(ID),MAX(ID) FROM TABLE 优化问题
    一次帮助网友优化的SQL案例
    Oracle11gR2 全表扫描成本计算(非工作量模式noworkload)
    & 符号在 SQLPLUS 的转义
    通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度
    [linux] 如何让你自己写的程序也支持自动补全(bash环境)
    linux 查看系统版本 命令
    ubuntu右键添加打开终端的快捷菜单
    ubuntu右键添加打开终端的快捷菜单
  • 原文地址:https://www.cnblogs.com/dearnotes/p/12358944.html
Copyright © 2011-2022 走看看