【发布时间】:2020-01-19 02:22:21
【问题描述】:
在阅读了 MDN 和 CodeAcademy 的大量文档后,我仍然不完全了解 CORS 握手实际上可以防止什么。
我了解该机制应保护浏览器在没有进一步控制的情况下请求位于不同来源的资源。
此外,据我了解规范,访问控制决策完全由作为 CORS 请求目标的服务器评估。 例如,如果服务器回复时设置了“Access-Control-Allow-Origin”标头(例如“*”),则允许浏览器处理该响应。
这里有两种情况会引起我的疑问:
- 如果我是一个邪恶的服务器开发者,我会回复 “Access-Control-Allow-Origin”设置为 * always,它允许 浏览器来处理响应。
- 如果我是一个邪恶的人,并且无论如何都想访问资源,我会使用未实现 CORS 机制的(自定义)Web 客户端。
提到这两种情况,我想知道 CORS 真正能防止什么。而且我想知道拒绝来自禁止来源的请求并在响应中发送适当的 HTTP 状态(例如 403 Forbidden)是否更安全。
可能我遗漏了一些东西,但如果有任何正确方向的提示,我将不胜感激。
【问题讨论】:
标签: web-services http browser cors