基于内容类型的预检请求触发器

时间:2016-08-22 09:05:35

标签: jquery cors

最近,我正在阅读有关预检请求(OPTIONS)并且知道它总是在内容类型为“application / json”时触发,或者除了“text / plain”,“application / x-www-”之外的其他内容form-urlencoded“& “multipart / form-data Content-Types”

所以我的问题是为什么它总是被触发特定的内容类型,如“application / json”而不是上面提到的内容类型。

1 个答案:

答案 0 :(得分:1)

简单请求

简单的跨站点请求是满足以下所有条件的请求: 唯一允许的方法是:

GET
HEAD
POST

除了用户代理自动设置的标头(例如Connection,User-Agent等)外,唯一允许手动设置的标头是:

Accept
Accept-Language
Content-Language
Content-Type

Content-Type标头唯一允许的值是:

application/x-www-form-urlencoded
multipart/form-data
text/plain

预检请求

与简单请求(如上所述)不同,“预检”请求首先通过OPTIONS方法向另一个域上的资源发送HTTP请求,以确定实际请求是否可安全发送。跨站点请求是这样预检的,因为它们可能对用户数据有影响。特别是,如果出现以下情况,请求会被预检:

  • 它使用GET,HEAD或POST以外的方法。此外,如果使用POST 使用除以外的Content-Type发送请求数据 application / x-www-form-urlencoded,multipart / form-data,或 text / plain,例如如果POST请求发送XML有效负载 服务器使用application / xml或text / xml,然后请求是 预检。
  • 它在请求中设置自定义标头(例如,请求使用标头 如X-PINGOTHER)

希望这能回答你的问题,请发表评论。

Source