【发布时间】:2021-02-22 09:34:21
【问题描述】:
我了解,GET 和 POST 等跨域“简单”请求始终被允许(但您无法查看响应),并且 PUT/DELETE 被阻止,或者如果您的浏览器支持 CORS,则预检.
我了解允许发送 GET 请求是无害的,只要响应被阻止,因为 GET 请求应该是安全/幂等的(如果不是,那是开发人员的错他们的 API ReSTful)。
我还从answer 了解到,GET 和 POST 是用户发出的典型/有意请求,例如在 URL 文本框中输入内容或单击按钮发布表单时。
但是为什么浏览器会允许使用 xhr 的跨域 POST 请求呢?
那么,如果用户可以通过单击按钮来发布表单来发出有意的 POST 请求怎么办? 允许 javascript 发送 POST 请求是一种灾难,任何加载的恶意页面都可能在幕后执行跨域 POST 请求。
为什么浏览器没有从一开始就阻止这一点?
如果他们这样做了,那么既然 CORS 出现了,POST 请求就可以像 PUT/DELETE 一样被预检,这样您就可以减少 xsrf 攻击了。
【问题讨论】:
标签: http cors csrf same-origin-policy