惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
L
LangChain Blog
云风的 BLOG
云风的 BLOG
Jina AI
Jina AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
量子位
The GitHub Blog
The GitHub Blog
博客园 - 【当耐特】

博客园 - 港城大白鲨

SQLServer2022安装记录 Go 语言从入门到理解 Oracle日常问题集锦 IO流操作flush应用场景 java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet 源码、反码、补码详解及Byte结构 SSL证书类型OV、EV、DV说明来源阿里云 Servlet导出Excel,Json .NET版本发布历史 C# 部分类 详解C#中 Thread,Task,Async/Await,IAsyncResult【转】 企业微信-自建应用使用审批流程引擎 C# 操作Excel 常用整理 SQLAlwayson搭建过程之三 AlwaysOn Failover Cluster Instance SQLAlwayson搭建过程之二 AlwaysOn可用性组 SQLAlwayson搭建过程之一故障转移集群WSFC Sharepoint server2019 通讯组(安全组)发送邮件问题 SQLServer链接服务器 C# 操作Exchange 的powershell以实现邮件撤回
content-type的理解和日常实践
港城大白鲨 · 2023-02-01 · via 博客园 - 港城大白鲨

Content-Type:一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码。在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。它用来告诉服务端如何处理请求的数据。白话点意思就是 告诉服务器 我传的是什么结构的数据,以便于服务器能够解析和处理。

可以参考Postman的一些截图示例

form-data(multipart/form-data)
x-www-form-urlencoded(application/x-www-form-urlencoded)
raw — TEXT (text/plain)
raw — Javascript (application/javascript)
raw — JSON (application/json)
raw — HTML (text/html)
raw — XML (text/xml)

一、form-data

这是一个多部分多媒体类型,boundary 用于分割不同的字段。它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型。

上图可以演示 为什么叫multipart 以及boundary 作用

特点:这个multipart 设计的很好,所以这个模式下既可以传表单,也可以传文件

二、x-www-form-urlencoded

特点:这个相比上面的form-data 看下图结构就可以看出,这个只能是键值对!!

其中每一个key和value均按照如下规则进行编码:

1、用"+"取代空字符
2、非数字, 字母用%HH格式进行替换, 其中HH是两位16进制数字, 表示被替换字符的ASCII码(例如"?"会被替换成"%3F", 对应十进制数是63, 也就是问号对应的ASCII值)
3、换行符用CR LF字符对表示, 对应的值是"%0D%0A";

我请求的参数:

效果

三、raw模式

我理解这个里面的几个对象是为了服务器端获取的时候便于解析,所以才分出来json,text等,其实可以看到请求的内容都是一致的,除了请求头不一样

 

以上  Content-Type在Ajax里的体现 为

$.ajax({
    url: '/',
    method: 'post',
    contentType: 'application/json;charset=utf-8', // 发送的数据类型
    data: { size:"1" },
    dataType:'html',
    success: function (xhr) {
    console.log(2) },
  error:function(){console.log(3)} })

另一个要补充的是 dataType,看以下截图为上方ajax执行示例,

这个是用于指定告知服务器期望返回的类型,常用的类型有:json、text、script、html、xml,这个值表现为请求头里的accept参数

切记,如果客户端指定了接受类型当服务器返回的不是指定类型时候其实会跳转到ajax的error分支里的,见下图的打印

 

**服务端的参数接收**

以ASP.NET为例,接收到的请求参数如下

 服务端返回给客户端,类似的这些都是MIME类型,具体直接百度搜索

{ ".xlm", "application/vnd.ms-excel" },

{ ".xls", "application/vnd.ms-excel" },