当请求的凭据模式为include时,相应中的Access-Control-Allow-Origin标头的值不能是通配符 “*”

  • 如在请求定义中设置withCredentials标志,则会在请求中传递cookie等。
  • 如果服务器返回任何set-cookie响应头, 那么必须返回Access-Control-Allow-Credentials: true, 否则将不会在客户端上创建 cookie
  • 如果你这样设置,你需要同时指定了确切的Access-Control-Allow-Origin响应头,因为Access-Control-Allow-Origin: 不具有凭证兼容

所以,当请求中携带cookie时, Access-Control-Allow-Origin必须要有确切的指定, 不能是通配符(*),而withCredentials是跨域安全策略的一个东西。

HTTP 请求方式有许多种,有些请求会触发 CORS 预检请求。需预检的请求会使用 OPTIONS 方法发起一个预检请求到服务器,以获知服务器是否允许该实际请求。

  • 对于跨域请求浏览器一般不会发送身份凭证信息。如果要发送凭证信息,需要设置 XMLHttpRequestwithCredentials 属性为 truewithCredentials: true。此时要求服务器的响应信息中携带 Access-Control-Allow-Credentials: true,否则响应内容将不会返回。
  • 对于携带身份凭证的请求,服务器不得设置 Access-Control-Allow-Origin 的值为“*”。因为请求头携带了 Cookie 信息。要将 Access-Control-Allow-Origin 的值设置为 http://www.zrt.local:8080
  • 另外,响应头中也携带了Set-Cookie字段,尝试对 Cookie 进行修改。如果操作失败,将会抛出异常。