发送cookies的默认值是SameSite=Lax,这意味着cookies是为GET请求发送的,但对于POST则被阻止。
对于跨源GET请求,响应由于Same-Origin-Policy而被阻塞,除非响应包含Access-Control-Allow-Origin。
为什么Access-Control-Allow-Origin还不够?
为什么要返回Access-Control-Allow-Origin: someDomain.com而不返回Access-Control-Allow-Credentials?
为什么允许跨源获取来自受信任域的请求,但仅当cookie被发送时才阻止响应?
发布于 2021-07-04 22:17:31
在存在cookie的情况下,允许跨源共享的风险要大得多,因为这可以向恶意脚本显示用户的私有信息。没有cookie,脚本只能访问公共信息--这些信息可以通过导航到任何计算机的URL来访问。
因此,Access-Control-Allow-Credentials的存在标志着一个重要的安全拐点,它有效地区分了共享公共信息和私有信息。
例如,假设您有一个分发股票代码代码数据的API,并且希望允许其他站点的脚本访问这个API。CORS是必要的,因为相同的原产地策略将阻止这些脚本查看数据。不过,没必要吃饼干。因此,该站点可以简单地使用*进行Access-Control-Allow-Origin并完成。没有共享任何私人数据的风险。
相反,一个想要实现用户特定数据共享的站点必须通过将Access-Control-Allow-Credentials设置为true来选择。此外,该站点被迫指定允许的特定站点,因为在这种情况下,*对Access-Control-Allow-Origin无效。
https://stackoverflow.com/questions/68235265
复制相似问题