Access-Control-Allow-Credentials 有什么意义?

2023-12-27

发送cookie的默认值是SameSite=Lax,这意味着针对 GET 请求发送 cookie,但针对 POST 请求则阻止。

对于跨源 GET 请求,由于以下原因,响应会被阻止:Same-Origin-Policy,除非响应包含Access-Control-Allow-Origin.

为什么不是Access-Control-Allow-Origin enough?

为什么你想回来Access-Control-Allow-Origin: someDomain.com也不返回Access-Control-Allow-Credentials?

为什么允许来自受信任域的跨源 GET 请求,但仅在发送 cookie 时才阻止响应?


在存在 cookie 的情况下,允许跨域共享的风险要大得多,因为这可能会将用户的私人信息泄露给恶意脚本。如果没有 cookie,脚本只能访问公共信息 — 与从任何计算机导航到 URL 即可访问的信息相同。

所以存在Access-Control-Allow-Credentials标志着一个重要的安全拐点,并有效区分共享公共信息和私人信息。

例如,假设您有一个用于分发股票行情数据的 API,并且您希望允许其他站点的脚本访问该 API。 CORS 是必要的,因为同源策略将阻止这些脚本查看数据。不过,不需要 cookie。所以该网站可以简单地使用* for Access-Control-Allow-Origin并完成。不存在共享任何私人数据的风险。

相比之下,想要共享用户特定数据的网站必须通过设置来选择加入Access-Control-Allow-Credentials to true。此外,该站点被迫指定允许的特定站点,因为*无效于Access-Control-Allow-Origin在这种情况下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Access-Control-Allow-Credentials 有什么意义? 的相关文章

随机推荐