一 常见的content-type类型
Content-Type是指http/https发送信息至服务器时的内容编码类型,contentType用于表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据。
在网络请求中,常用的Content-Type有如下:
text/html, text/plain, text/css, text/javascript, image/jpeg, image/png, image/gif,
application/x-www-form-urlencoded, multipart/form-data, application/json, application/xml 等。
其中:text/html, text/plain, text/css, text/javascript, image/jpeg, image/png, image/gif, 都是常见的页面资源类型。
application/x-www-form-urlencoded, multipart/form-data, application/json, application/xml 这四个是ajax的请求,表单提交或上传文件的常用的资源类型。
*application/x-www-form-urlencoded
form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。
当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。
当action为post时候,浏览器把form数据封装到http body中,然后发送到server。如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。
根据查找的资料得到如下总结:
application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
首先,Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。例如 PHP 中,POST[′title′]可以获取到title的值,_POST['title'] 可以获取到 title 的值,P​OST[′title′]可以获取到title的值,_POST[‘sub’] 可以得到 sub 数组。
很多时候,我们用 Ajax 提交数据时,也是使用这种方式。例如 JQuery 和 QWrap 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。
如果POST提交的URL中同样带着参数,那么在服务端同样可以使用$_GET来获取提交的参数。


application/x-www-form-urlencoded 是最常用的一种请求编码方式,支持GET/POST等方法,所有数据变成键值对的形式 key1=value1&key2=value2
的形式,并且特殊字符需要转义成utf-8编号,如空格会变成 %20;
默认的提交方式是 application/x-www-form-urlencoded 编码提交数据的,在chrome的network面板下,默认的请求体是被解析的。展示成formData的形式;
在AJAX提交中 contentType为 application/x-www-form-urlencoded,此时提交的数据将会格式化成:username=111&age=2;
如果请求类型type是GET的话,那么格式化的字符串将直接拼接在url后发送到服务端; 如果请求类型是POST, 那么格式化的字符串将放在http body的Form Data中发送。

三 multipart/form-data
指定传输数据为二进制数据,例如图片、mp3、文件。
一般来说,method和enctype是两个不同的互不影响的属性,但在传文件时,method必须要指定为POST,否则文件只剩下filename了;
四 application/json
application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。
五 formData和request payload
1 get方式的请求是没有请求体的。但是get有query string parameter 这就是url?之后的一串东西。post请求发现了两种请求体。一种是FromData形式的请求体,一种是request payload形式的。这个可以F12查看network详细。
2 post请求体是通过请求头中的Content-Type来区分的:formData形式的Content-Type为application/x-www-form-urlencoded ;而request payload形式的请求体Content-Type为application/json或multipart/form-data 。
3 只有x-www-form-data multipart/form-data 这两种形式的payload才会填充$_POST, 而application/json则填充 file_get_contents(‘php://input’)

HTTP post请求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. eclipse 设置 content type 编码格式

    前言 Eclipse Version: 2019-12 (4.14.0) 操作 打开Preferences.菜单路径为:Window–> Preferences 在搜索框中输入:content ...

  3. 阿里云存储OSS中设置上传文件content type

    阿里云存储OSS中设置上传文件ContentType 如果你使用浏览器上传文件,则浏览器会自动在header中设置正确地content type,然后对文件的访问会得到正确地回应. 如果采用编程的方式 ...

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

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

  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. javax.ws.rs.NotSupportedException: Cannot consume content type

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

  7. Error while extracting response for type [class xxx] and content type application/xml;charset=UTF-8

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 最近在用restTemplate进行一次http请求时发现了报错(Error whil ...

  8. Could not extract response: no suitable HttpMessageConverter found for content type [text/html]

    目录 报错信息 源码分析 解决方法 修改 mappingJackson2HttpMessageConverter 配置 继承 mappingJackson2HttpMessageConverter 实 ...

  9. Sharepoint学习笔记—Site Definition系列-- 2、创建Content Type

    Sharepoint本身就是一个丰富的大容器,里面存储的所有信息我们可以称其为"内容(Content)",为了便于管理这些Conent,按照人类的正常逻辑就必然想到的是对此进行&q ...

  10. “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 ...

最新文章

  1. python中怎么输出中文-python中使用print输出中文的方法
  2. Spring-AOP @AspectJ切点函数之@annotation()
  3. 编程之美-寻找最近点方法整理
  4. x264源代码分析1。fread()
  5. Python描述符是什么?
  6. golang *time.Time类型转*timestamppb.Timestamp
  7. 文件如何存储c语言,急求如何将下列C语言程序数据存储到文件中?
  8. signature=efaf25d07c6ea03d7552906c0caee5a8,幼児の認知発達における関係把握の問題
  9. Customer Exit
  10. crontab定时器
  11. visual studio写python_将 Visual Studio 变身为 Python IDE
  12. 灰度世界 matlab,灰度世界算法(Gray World Algorithm)和White Patch Retinex算法
  13. 存储卡修复软件测试自学,扩容内存卡用mydisktest失效,教你怎么用USBoot恢复出真实容量...
  14. 配置网络终端计算机,终端网络计算机概述.ppt
  15. wine linux 目录,linux下wine安装
  16. dxo photolab mac 破解版永久激活方法
  17. 大图片显示在客户端,被压扁失真的问题
  18. 提高APP用户粘性,你需要了解这些!
  19. python简单小游戏代码教程,python小游戏程序源代码
  20. SOLIDWORKS快捷键167个小技巧

热门文章

  1. python(课时3)
  2. tomcat限速_网络限速
  3. OpenStack octavia LB负载均衡基础
  4. 2021年G3锅炉水处理考试总结及G3锅炉水处理操作证考试
  5. 移动衰落信道 matlab,Matlab在移动衰落信道中建模与仿真
  6. java多态 降低代码耦合性_如何降低耦合度
  7. react flux的坑之(三) npm install 慢,或执行 npm instal之后run以后报错少包
  8. Starting sshd: /var/empty/sshd must be owned by root and not group or world-writable.
  9. linux中ctrl加c命令什么意思,Linux命令中Ctrl+z、Ctrl+c和Ctrl+d的区别和使用详解
  10. Steam Deck 游戏机底座方案(LT8711UXD 2Lane支持4K/60HZ高刷新率)