【发布时间】:2017-12-13 17:36:53
【问题描述】:
MDN 表示,当必须在站点之间交换 cookie、授权标头或 TLS 客户端证书等凭据时,Access-Control-Allow-Crendentials 必须设置为 true。
考虑两个站点 A - https://example1.xyz.com,另一个是 B- https://example2.xyz.com。现在我必须从 A 向 B 发出 http Get 请求。当我从 A 请求 B 时,我得到了,
“请求中没有“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“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设置为从请求头获取的origin而不是通配符*?
请给我举个例子更好地理解它。
【问题讨论】:
标签: http cors httpresponse same-origin-policy fetch-api