CORS 中的 POST/GET 与 PUT/DELETE

问题描述 投票:0回答:1

我刚刚读了这个

同源策略允许使用 GET 和 POST 的跨源 HTTP 请求 方法,但拒绝跨源 PUT 和 DELETE 请求

PUT/DELETE 有什么特别之处?他们为什么被封锁?无论如何,您可以在 POST 方法内进行更新/删除。

使用 CORS,如果 POST 请求使用 xml/json 而不是 application/x-www-form-urlencoded,为什么会预检?

请解释为什么某些动词的处理方式与其他动词不同。

编辑:我最终在一篇文章中写了这一点。

http cors csrf same-origin-policy
1个回答
3
投票

根本区别在于用户浏览网页触发的请求类型和脚本触发的请求类型。这种区别植根于网络历史,基于早期浏览器认为安全和不安全的概念。此后所有浏览器都试图保持向后兼容性,以免违反依赖于那些早期事实上的标准的服务器的期望。

用户浏览网络会产生哪些类型的请求?基本上,由表单提交触发的

GET
请求和
POST
请求。浏览器始终允许此类跨源请求,因此它们假设服务器旨在处理它们。但这不包括,例如,具有只能由脚本添加的自定义标头的
POSTS
。 (有关请求安全与否的准确描述,请参阅 Fetch 规范。)

请参阅我的回答此处,了解有关 CORS 如何使用预检请求来保持与同源策略的向后兼容性的更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.