CORS策略阻止:对飞行前请求的响应未通过访问控制检查:当请求的凭据模式为'include'时,响应中的'access-control-Allow-Origin'标头的值不得为通配符'*'。XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制。
时间: 2024-09-14 15:16:09 浏览: 69
CORS(跨源资源共享)是一种安全机制,用于控制一个域下的网页是否有权限去访问另一个域下的资源。当浏览器检测到跨域HTTP请求时,它会首先发送一个预检请求(即Options请求),来确定实际的请求是否安全可接受。如果响应中没有正确的CORS头部信息,则浏览器会阻止实际的请求,并抛出错误。
在您提到的情况下,当请求的模式为'include'时,意味着请求中会包含用户凭证(比如Cookies和HTTP认证信息)。如果响应头中的'Access-Control-Allow-Origin'设置为'*'(代表接受任何域的请求),那么浏览器出于安全考虑,会阻止这种跨域请求,因为 '*' 不可能同时包含特定的凭证信息。
为了让带有凭证的请求不被阻止,服务器端的响应中必须设置'Access-Control-Allow-Origin'头部来指定明确的源,而不是使用通配符'*'。同时,响应中还必须包含'Access-Control-Allow-Credentials'头部,并且其值必须为'true',以表明服务器允许跨域请求携带凭证。
例如,如果前端页面是 http://www.example.com,而API服务器是 http://api.example.com,那么API服务器的响应头应该包含如下信息:
```
Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Credentials: true
```
这样,当来自 http://www.example.com 的带有凭证的请求到达 http://api.example.com 时,浏览器会允许该请求正常进行。
阅读全文