为什么POST请求总是预先检查?

时间:2015-06-19 11:58:09

标签: http cors w3c

根据MDN,如果内容类型为application/x-www-form-urlencodedmultipart/form-datatext/plain,则不会预先发出POST请求。

multipart/form-dataapplication/xml完全一样不安全吗?例如,无论端点接受的内容类型如何,我都希望始终不允许对URL http://bank.com/money-orders/的跨源POST请求。

1 个答案:

答案 0 :(得分:1)

因为:在CORS被构思之前,有可能仅通过例如从一个源发送到另一个源的网页发送跨源POST请求来自用户填写页面上的表单的结果在一个来源并点击 提交 按钮将其发送到另一个来源。

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

那时候,在这样的POST请求中无法发送自定义标头。但是,CORS可以做到这一点 - 提出服务器之前没有见过或不得不处理的新请求。因此,预检的目的是基本上对服务器说,这是一种新的POST(或GET)类型,你必须表明你正在选择和使用(或新方法)。

但是,如果POST请求与基本上一直在Web上允许的简单POST请求没有任何不同,那么就不需要提前到服务器了。