javascript - 请求的 content-type header 包含的内容多于 MIME 类型,为什么?

标签 javascript ajax json

我注意到有时请求的 content-type header (例如,由 Firefox 发出)不仅包含有关 MIME 类型的信息,还包含有关编码的信息。

例如,当使用 AJAX 而不是发送 JSON 时

application/json

(我所期望的)Firefox 发送:

application/json; charset=UTF-8

我对此行为有很多疑问:

  1. 还可能发生哪些其他“参数”(或“选项”,或任何您所说的字符集值)?
  2. application/json 是否始终排在第一位,或者这些值可能以随机顺序出现(即,它也可以是 charset=UTF-8; application/json) ?
  3. 分隔符总是;吗?
  4. 测试特定 MIME 类型的规范方法是什么?显然,仅比较标题是行不通的。有什么提示吗?有没有比 contentType === 'application/json || 更好的东西contentType.startsWith('application/json;')?

PS:对于问题#4,我创建了一个单独的问题。请参阅Get an entire string or a substring, depending on a specific character

最佳答案

请参阅HTTP 1.1 RFC

3.7 Media Types

HTTP uses Internet Media Types [17] in the Content-Type (section 14.17) and Accept (section 14.1) header fields in order to provide open and extensible data typing and type negotiation.

   media-type     = type "/" subtype *( ";" parameter )
   type           = token
   subtype        = token Parameters MAY follow the type/subtype in the form of attribute/value pairs (as defined in section 3.6).

所以

  1. 没有固定的可能值列表
  2. 是的,类型应该放在第一位
  3. 分隔符为;

关于javascript - 请求的 content-type header 包含的内容多于 MIME 类型,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26947564/

相关文章:

javascript - 向对消息使用react的人发送 DM - Discord JS

javascript - Express res.render 重定向后不工作

javascript - 无法解析包含 unicode 十六进制字符的 JSON 字符串

javascript - 通过解析 JSON 对象返回父级

javascript - 使用 Babel 将 ES6 模块转换为 ES5 AMD 模块,未按预期工作

javascript - AngularJS 多项目轮播

javascript - JQuery AutoComplete,手动选择第一个搜索项并绑定(bind)点击

javascript - 在 Restangular post 请求中使用单一和全部链接

java - 如何从 Apache Wicket 的组件中正确删除 AjaxSelfUpdatingTimerBehavior?

java - 我如何使用 Jackson 解析以下 JSON。为使用 Jackson ObjectMapper 创建的最相关的 java 对象是什么?