【问题标题】:preflight request triggers based on content-type基于内容类型的预检请求触发器
【发布时间】:2016-12-28 18:13:15
【问题描述】:

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

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

【问题讨论】:

    标签: jquery cors


    【解决方案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, 或 文本/纯文本,例如如果 POST 请求向 服务器使用 application/xml 或 text/xml,那么请求是 预检。
    • 它在请求中设置自定义标头(例如,请求使用标头 例如 X-PINGOTHER)

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

    Source

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 2018-11-03
      • 2010-12-11
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 2011-11-19
      相关资源
      最近更新 更多