HTTP Content-Type 小记

251 阅读2分钟

前言

最近一段时间发现自己的基础知识遗忘得很厉害,技术成长倒是有不少,但是没有落于纸面,同样容易忘记。

因此决定重新开始写博客,来当作自己的笔记,如果能有益于他人,则更好不过。

Content-Type 的作用

Content-Type 实体头部用于指示资源的 MIME 类型 media type 。

在 HTTP Request 中,Content-Type 用于向服务器表明发送数据的类型。

而在 HTTP Respose 中,Content-Type 用于告诉客户端实际返回的内容的类型。

特殊情况

浏览器会在某些情况下浏览器会在某些情况下进行MIME查找,并不一定遵循此标题的值; 为了防止这种行为,可以将标题 X-Content-Type-Options 设置为 nosniff。

X-Content-Type-Options HTTP 消息头相当于一个提示标志,被服务器用来提示客户端一定要遵循在 Content-Type 首部中对 MIME 类型 的设定,而不能对其进行修改。这就禁用了客户端的 MIME 类型嗅探行为,换句话说,也就是意味着网站管理员确定自己的设置没有问题。

语法

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

常见用法(POST)

application/json

该类型普遍应用于前端,对于前端来说,只要发送的值是一个合法的 JSON 就好。解析都是由后端进行的。

application/x-www-form-urlencoded

普通 Form 形式提交的结果(不支持二进制)

发送的内容是经过 URL Encode 的字符串,其形式类似于 URL 参数。

multipart/form-data

<form action="/" method="post" enctype="multipart/form-data">
  <input type="text" name="description" value="some text">
  <input type="file" name="myFile">
  <button type="submit">Submit</button>
</form>

FormData 接口提供了一种表示表单数据的键值对 key/value 的构造方式,并且可以轻松的将数据通过XMLHttpRequest.send() 方法发送出去,本接口和此方法都相当简单直接。如果送出时的编码类型被设为 "multipart/form-data",它会使用和表单一样的格式。

参考资料