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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
Latest news
Latest news
N
News | PayPal Newsroom
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AI
AI
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
T
Threat Research - Cisco Blogs
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Exploit Database - CXSecurity.com
NISL@THU
NISL@THU
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Securelist
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
Cisco Talos Blog
Cisco Talos Blog
云风的 BLOG
云风的 BLOG
AWS News Blog
AWS News Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
美团技术团队
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
S
Schneier on Security
博客园 - 聂微东
V2EX - 技术
V2EX - 技术
T
Troy Hunt's Blog
SecWiki News
SecWiki News
S
Secure Thoughts
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
腾讯CDC
H
Heimdal Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed

博客园 - 港城大白鲨

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" },