研究HTTP请求头部的 Content-Type 字段,基于 Chrome 插件 DHC

1. GET 请求

GET 请求不存在请求实体部分,键值对参数放置在 URL 尾部,因此请求头不需要设置 Content-Type 字段

非 ASCII 码会自动进行编码转换,例如发送请求:www.bilibili.com?hehe=你的我的

GET /?hehe=%E4%BD%A0%E7%9A%84%E6%88%91%E7%9A%84 HTTP/1.1
Host: www.bilibili.com

值得一提的是,GET 参数的编码方式是无法人为干涉的,这导致了不同浏览器有不同的编码方式,因此最稳妥的方案是人工预编码,人工解码,从而禁止浏览器编码的干涉

2. POST 请求

第一类:raw 原始类型,可以上传任意格式的文本,比如 text、json、xml、html(中文不进行编码)

①text 请求

POST / HTTP/1.1
Host: www.bilibili.com
Content-Type: text/plain
Content-Length: 44ALARM=hellowww&&adzdzd12323...22你的我的

②json 请求

POST / HTTP/1.1
Host: www.bilibili.com
Content-Type: application/json
Content-Length: 44ALARM=hellowww&&adzdzd12323...22你的我的

③html 请求

POST / HTTP/1.1
Host: www.bilibili.com
Content-Type: text/html
Content-Length: 44ALARM=hellowww&&adzdzd12323...22你的我的

第二类:application/x-www-form-urlencoded,会将表单内的数据转换拼接成 key-value 对(非 ASCII 码进行编码)

发送 POST 请求,参数为:aaa=aaa,bbb=你的我的

POST / HTTP/1.1
Host: www.bilibili.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 48aaa=aaa&bbb=%E4%BD%A0%E7%9A%84%E6%88%91%E7%9A%84

从这里可以看出,application/x-www-form-urlencoded 对非 ASCII 的编码方式与 GET 请求参数的编码方式和格式都是一样的

值得一提的是,POST 请求的编码格式是可以人工干预的:在 form 表单所在的 html 文件里如果有段 ,那么 post 就会用此处指定的编码方式编码,JSP 也有类似的声明方式;开发人员可以用此来指定 POST 请求的编码格式

第三类:multipart/form-data,将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件

发送 POST 请求,参数为:aaa=aaa,bbb=你的我的啊啊啊,file=图片

POST / HTTP/1.1
Host: www.bilibili.com
Content-Type: multipart/form-data;boundary=------FormBoundary15e896376d1
Content-Length: 19532------FormBoundary15e896376d1
Content-Disposition: form-data; name="aaa"aaa
------FormBoundary15e896376d1
Content-Disposition: form-data; name="bbb"你的我的啊啊啊
------FormBoundary15e896376d1
Content-Disposition: form-data; name="file"; filename="cat-icon.png"
Content-Type: image/png[message-part-body; type:image/png, size:19201 bytes]
------FormBoundary15e896376d1--

可以看到,中文并没有被编码

HTTP请求头部Content-Type字段相关推荐

  1. restTemplate http请求报错:no suitable HttpMessageConverter found for response type and content type

    报错信息: org.springframework.web.client.UnknownContentTypeException: Could not extract response: no sui ...

  2. 使用apache的HttpClient进行http通讯,隐藏的HTTP请求头部字段是如何自动被添加的

    我们用apache的HttpClient这个库消费云端的Restful API时,一般都需要两次HTTP调用,第一次获得某种token,比如获取防止跨域请求伪造攻击Cross-site request ...

  3. 请求状态为200,前端报系统出错,后端日志报“Content type ‘application/octet-stream‘not supported“错误

    请求后端出现"Content type 'application/octet-stream'not supported"错误 错误描述: Content type 'applica ...

  4. 计算机网络 HTTP请求及响应首部字段

    目录 请求首部字段 Accept Accept-Charset Accept-Encoding Accept-Language Authorization Expect From Host If-Ma ...

  5. Spring Boot——[Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]解决方案

    问题描述 2020-02-13 19:32:04.322 WARN 109508 --- [p-nio-80-exec-4] .m.m.a.ExceptionHandlerExceptionResol ...

  6. “Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“解决方法

    项目接口返回 code: 500 data: null message: "Content type 'application/x-www-form-urlencoded;charset=U ...

  7. javax.ws.rs.NotSupportedException: Cannot consume content type

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 报错如题:javax.ws.rs.NotSupportedException: Cannot con ...

  8. SharePoint2010 内容类型剖析(Content Type/ 內容類型)

    原文地址:http://sharepoint410.wordpress.com/2011/01/06/sharepoint2010-%E5%86%85%E5%AE%B9%E7%B1%BB%E5%9E% ...

  9. Error while extracting response for type [] and content type [],json返回值被解析为xml

    在使用restTemplate请求restful接口时,在特定情况下总会将返回的json数据解析为xml数据然后处理,接着就会爆出标题中的错误: Error while extracting resp ...

最新文章

  1. 信号与系统2021年期末考试命题
  2. android实现语音合成
  3. 长篇问答任务(LFQA)的发展面临哪些阻碍?
  4. 验证手机号码归属地_最新确认:手机号码归属地不能取消
  5. pandas apply函数_Pandas学习笔记(四)
  6. 后端比android简单,android开发怎么少的了后端(下)
  7. j2ee学习方法摘要
  8. [转载]计算机视觉专业名词中英文对照
  9. Win 10 添加多国语言
  10. 【Android】在有menu键的手机上显示ActionBar上的Menu键
  11. 钉钉桌面版绑定其他邮箱
  12. 数据可视化:地图使用案例
  13. MP4 全介绍【转载】
  14. 高通Sensor校准
  15. 如何正确的设置使用代理IP?
  16. 小六六平时的开发小技巧一(公共属性填充))
  17. next主题侧边目录点击失效无法正常跳转
  18. [备忘]autorun专杀工具
  19. CentOS6.6安装oralce11gR2数据库
  20. 绘制云图的三种算法(附C#代码)

热门文章

  1. python实现“粒子动画”
  2. 关于数据库时间保存, 为什么用时间戳的见解
  3. 国产手机厂商扎堆海外,vivo成国际化标杆
  4. 松下伺服调试软件 支持A5、A6,中文版
  5. 菲律宾联合银行推出加密货币ATM
  6. DDR4内存全景解析
  7. 缺图源?来看这个好用且惊艳的在线卫星地图!可添加奥维和GIS软件
  8. lisp 焊接符号标注_机械制图焊缝标注方法!太全了,收藏了
  9. E. Calendar Ambiguity(思维数论)
  10. Mixly图形化编程四轴飞行器飞控程序