【发布时间】:2019-06-23 03:17:00
【问题描述】:
我正在搜索默认情况下在浏览器上禁用 CORS 的原因。 我以为我在旧帖子中找到了示例的答案
Why is CORS without credentials forbidden?这里主要关注的是基于网络拓扑的访问控制。 假设您在您的家庭网络上运行 HTTP 服务(事实上,如果您的路由器本身具有 Web 界面,您几乎肯定会这样做)。我们将此服务称为 R,只有连接到您的家庭路由器的机器才能访问该服务。 当您的浏览器访问 evil.example.com 时,该站点会为您的浏览器提供一个脚本,告诉它获取 R 的内容并将其发送回 evil.example.com。即使没有凭据,这也可能很糟糕,因为这违反了本地网络之外的任何人都无法查看本地网络内运行的服务的假设。同源政策阻止了这种情况的发生。
然后我实际上读到了一个关于 CORS 机制的观察,听起来不错
Why is CORS Disabled by Default?CORS 基于从 API 返回的响应标头。拒绝响应请求的不是 API,Web 浏览器明确禁止处理响应。 API 将正常处理请求。
因此我对第一个引用的“示例”表示怀疑:由于启用 CORS 是通过将正确的标头(Access-Control-Allow-Origin, ...)设置到服务器响应中来完成的,什么样的保护将是如果绕过它,“evil.example.com”只需“将标头设置到他的响应中以在客户端上启用 CORS”?
如果是这样,是否还有其他简单示例说明为什么禁用 CORS?
【问题讨论】:
标签: cors