• HTTP包体的传输方式


    HTTP包体:承载的消息内容

    请求和响应都可以携带包体

    • HTTP-message = start-line *( header-field ) CRLF [ message-body ]
    • message - body = *OCTET:二进制字节流

    以下消息不能含有包体

    • HEAD 方法请求的响应
    • 1XX、204、304对应的响应
    • CONNECT 方法对应的 2xx 响应

    传输HTTP包体有几种方式?

    一、发送HTTP消息时已能够确定包体的全部长度

    使用Content-Length 头部明确指明包体长度

    • Content-Length = 1*DIGIT
    • 用10进制(不是16进制)表示包体的字节个数,且必须与实际传递的包体长度一致

    优点:接收端处理更简单(接收端只读取指定的字节数)

    服务端响应中如下:Content-Length 显示6,而实际的字节数为10

    但是我们的浏览器中只显示6个字节,但是实际抓到的包中有10个字节,只解析了6个。如下图:

     如果我们的 Content-Length 中的长度超出了实际的长度的话,浏览器时解析不了内容的。

    二、发送HTTP消息时不能够确定包体的全部长度

    • 使用Transfer-Encoding头部指明使用的Chunk传输方式
        • 含Transfer-Encoding头部后Content-Length头部应被忽略

    优点:

    • 基于长连接持续推送动态内容
    • 压缩体积较大的包体时,不必完全压缩完(计算出头部)再发送,可以边发送边压缩
    • 传递必须在包体传输完才能计算出的 Trailer 头部

    抓到的包

    MIME( Multipurpose Internet Mail Extendsions )

    content := " Content-Type " ":" type "/" subtype *(";" parameter)

    • type := discrete-type / composite-type 
        • discrete-type :="text" / "image" / "audio" / "video" / "application" / extention-token
        • composite-type := "message" / "multipart" / extension-token 
        • extension-token :=ietf-token / x-token
    • subtype :=extension-token / iana-token
    • parameter := attribute "=" value

    大小写不敏感,但通常小写

    例如:Content-Type: text/html; charset=UTF-8

    https://www.iana.org/assignments/media-types/media-types.xhtml

    Content-Disposition 头部(RFC6266)

    disposition-type = "inline" | "attachment" | "disp-ext-type" 

    • inline :指定包体是以内联的方式,作为页面的一部分展示
    • attachment:指定浏览器将包体以附件的方式下载

    例如:Content-Disposition:attachment

       Content-Disposition:attachment;filename="filename.jpg"

    • 在mutilpart/form-data类型应答中,可以用于子消息体的一部分

    例如:Content-Disposition:form-data;name="fieldname"

    可忽略:

    https://www.cnblogs.com/fengxiaoyuan/p/11842743.html

  • 相关阅读:
    正则表达式学习网站
    Longest Substring Without Repeating Characters
    保留小数点后几位数字
    ReentrantLock和synchronized的区别随笔
    范型 小编
    两个线程交替打印字符串
    Gray Code
    Ajax
    堆排序
    Clone Graph
  • 原文地址:https://www.cnblogs.com/fengxiaoyuan/p/10971012.html
Copyright © 2020-2023  润新知