【问题标题】:Why aren't POST requests always preflighted?为什么不总是预检 POST 请求?
【发布时间】:2015-09-05 09:42:22
【问题描述】:

根据MDN,如果Content-Type 是application/x-www-form-urlencodedmultipart/form-datatext/plain 中的任何一个,则不会预检POST 请求。

但是multipart/form-data 不是和application/xml 一样不安全吗?例如,无论端点接受的内容类型如何,我都希望始终禁止对 url http://bank.com/money-orders/ 的跨域 POST 请求。

【问题讨论】:

标签: http cors w3c


【解决方案1】:

因为:在 CORS 被构想出来之前,就可以发送跨域 POST 请求,例如,一个来源的网页将用户在页面上填写表单的结果发送到另一个来源在一个来源并单击 提交 按钮将其发送到另一个来源。

因此,基本上,CORS 不会改变这种行为——它不会阻止或禁止它,因为在 CORS 出现之前它已经成为可能并被允许。

不过,那时还没有办法在这样的 POST 请求中发送自定义标头。但是 CORS 使这成为可能——发出一种服务器以前从未见过或不得不处理的新请求。因此,预检的目的基本上是对服务器说,这是一种新类型的 POST(或 GET),您必须表明您正在选择加入并且可以使用(或新方法)。

但是,如果 POST 请求与在 Web 上基本上一直允许的简单 POST 请求没有任何不同,则不需要向服务器发出警告。

【讨论】:

    猜你喜欢
    • 2022-07-18
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2015-08-06
    • 2014-03-26
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多