我刚刚读过this https://www.w3.org/Security/wiki/Same_Origin_Policy:
同源策略允许使用 GET 和 POST 的跨源 HTTP 请求
方法,但拒绝源间 PUT 和 DELETE 请求
PUT/DELETE 有什么特别之处?他们为什么被封锁?无论如何,您可以在 POST 方法内进行更新/删除。
使用 CORS,如果 POST 请求使用 xml/json 而不是 application/x-www-form-urlencoded,为什么会预检?
请解释为什么有些动词的处理方式与其他动词不同。
EDIT:我最终在一篇文章中写了这个article https://levelup.gitconnected.com/simulating-a-csrf-attack-part-1-5ec8b0f8b152?sk=b3a72bec0891b9d4641729330015ea87.
根本区别在于用户浏览网页触发的请求类型和脚本触发的请求类型。这种区别植根于网络历史,基于早期浏览器认为安全和不安全的概念。此后所有浏览器都试图保持向后兼容性,以免违反依赖于早期浏览器的服务器的期望de facto标准。
用户浏览网络时会产生哪些类型的请求?基本上,GET
请求和POST
由表单提交触发的请求。浏览器始终允许此类跨源请求,因此它们假设服务器旨在处理它们。但这不包括,例如,POSTS
具有只能由脚本添加的自定义标头。 (有关请求安全与否的准确描述,请参阅获取规格 https://fetch.spec.whatwg.org/#main-fetch.)
看我的回答here https://stackoverflow.com/a/41687744/2395796有关 CORS 如何使用预检请求来保持与同源策略的向后兼容性的更多详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)