请求的content-type标头包含的不仅仅是MIME类型,为什么?

时间:2014-11-15 15:46:13

标签: javascript ajax json

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

,例如,使用AJAX而不是

发送JSON时
application/json

(我的预期)Firefox发送:

application/json; charset=UTF-8

我对此行为有很多疑问:

  1. 可能会发生什么其他“参数”(或“选项”,或任何您称之为charset的值)?
  2. application/json总是先出现,或者值是否以随机顺序出现(也就是charset=UTF-8; application/json}?
  3. 分隔符是否始终为;
  4. 测试特定MIME类型的规范方法是什么?显然,只是比较标题不起作用。任何提示?有没有比contentType === 'application/json || contentType.startsWith('application/json;')更好的东西?
  5. PS:对于问题#4,我创建了一个单独的问题。见Get an entire string or a substring, depending on a specific character

1 个答案:

答案 0 :(得分:1)

请参阅HTTP 1.1 RFC

  

3.7媒体类型

     

HTTP使用Content-Type中的Internet媒体类型[17](部分   14.17)和Accept(第14.1节)标题字段,以提供开放和可扩展的数据类型和类型协商。

   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. 分隔符为;