MDN https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials表示,当必须在站点之间交换 cookie、授权标头或 TLS 客户端证书等凭据时Access-Control-Allow-Crendentials
必须设置为true
.
考虑两个站点 A -https://example1.xyz.com https://example1.xyz.com另一个是B-https://example2.xyz.com https://example2.xyz.com。现在我必须创建一个httpGet
从 A 到 B 的请求。当我从 A 请求 B 时,我得到,
“请求的内容中不存在‘Access-Control-Allow-Origin’标头
资源。起源 'http://example1.xyz.com http://example1.xyz.com' 因此不允许
使用权。”
因此,我在 B 中添加以下响应标头
response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));
这解决了同源错误,我可以向 B 请求。我何时以及为什么应该设置
response.setHeader("Access-Control-Allow-Credentials", "true");
当我用谷歌搜索解决这个问题时same-origin
错误,大多数人建议使用这两个标头。我不清楚使用第二个Access-Control-Allow-Credentials
.
- 我什么时候应该同时使用两者?
- 我为什么要设置
Access-Control-Allow-Origin
to origin
从请求头而不是通配符获取*
?
请给我举一个例子以更好地理解它。
如果您希望请求也能够发送 cookie,则需要允许凭据。如果您需要授权传入请求,基于会话 ID cookie 将是一个常见的原因。
设置通配符允许任何站点向您的端点发出请求。如果请求与您定义的白名单匹配,则通常将允许设置为 origin。某些浏览器会缓存允许响应,如果您也从另一个域请求相同的内容,这可能会导致请求被拒绝。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)