• http header Content-Type之常用三种


    Content-Type 用于指示资源的MIME类型

    • 在响应头中,告诉客户端实际返回内容的类型
    • 在请求头中,告诉服务器实际发送的数据类型

    句法:

    Content-Type: text/html; charset=utf-8
    Content-Type: multipart/form-data; boundary=something

    指令

    media-type
    资源或数据的 MIME type 。
    charset
    字符编码标准。
    boundary
    对于多部分实体,boundary 是必需的,其包括来自一组字符的1到70个字符,已知通过电子邮件网关是非常健壮的,而不是以空白结尾。它用于封装消息的多个部分的边界。

    这里主要介绍三种常见的media-type: application/x-www-form-urlencoded, multipart/form-data, application/json

    我们使用chrome控制台可以看到,有些请求参数在Form Data中,一个在Request Payload中,这是因为Content-Type设置不同。

    1. application/x-www-form-urlencoded  请求参数在Form Data中,键值对,用间隔分开,如: name1=value1&name2=value2
    2. multipart/form-data  请求参数在Request Payload 中, 可以上传文件,也可以上传键值对,最后会转化为一条由boundary字符串分隔的信息体。boundary是一个不可能在数据中出现的字符串。 如:------WebKitFormBoundaryyb1zYhTI38xpQxBK就是boundary
    POST http://www.example.com HTTP/1.1
    Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyb1zYhTI38xpQxBK
    
    ------WebKitFormBoundaryyb1zYhTI38xpQxBK
    Content-Disposition: form-data; name="city_id"
    
    1
    
    ------WebKitFormBoundaryyb1zYhTI38xpQxBK
    Content-Disposition: form-data; name="company_id"
    
    2
    ------WebKitFormBoundaryyb1zYhTI38xpQxBK
    Content-Disposition: form-data; name="file"; filename="chrome.png"
    Content-Type: image/png
    
    PNG ... content of chrome.png ...
    ------WebKitFormBoundaryyb1zYhTI38xpQxBK--

         3. application/json 请求参数在Request Payload中, 参数形式:{key:value}

    以上三种类型,在服务端获取参数的方法不同, 因此如果设置错误,可能会造成后端接受不到数据的情况。

    实际开发中选择哪种Content-Type呢?

    二进制文件选择:multipart/form-data;

    大段的json字符串,适合使用payload,因此可以选择:application/json

    application/x-www-form-urlencoded:最常见,原生form变动,如果不设置enctype属性,那么默认该类型提交数据。

  • 相关阅读:
    解剖PetShop系列之六PetShop表示层设计
    解剖PetShop系列之五PetShop之业务逻辑层设计
    用memset给一个char设置0xff,然后将该char和0xff ==,能相等么?
    用gdb如何查看指定地址的内存内容?
    Open a pipe will block if other side hasn't opened this pipe
    inet_aton和inet_pton的区别
    很多源码中看到的ignore SIGCHLD信号是做什么用的?
    Linux下getopt函数使用Tips
    Linux下编译一个静态链接的程序的注意点
    Linux 脚本和程序对SIGINT的处理方案,脚本通过kill给程序传递信号
  • 原文地址:https://www.cnblogs.com/yadiblogs/p/10769705.html
Copyright © 2020-2023  润新知