当请求的凭据模式为 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
方法发起一个预检请求到服务器,以获知服务器是否允许该实际请求。
- 对于跨域请求浏览器一般不会发送身份凭证信息。如果要发送凭证信息,需要设置
XMLHttpRequest
的withCredentials
属性为true
;withCredentials: true
。此时要求服务器的响应信息中携带Access-Control-Allow-Credentials: true
,否则响应内容将不会返回。 - 对于携带身份凭证的请求,服务器不得设置
Access-Control-Allow-Origin
的值为 “*”。因为请求头携带了 Cookie 信息。要将Access-Control-Allow-Origin
的值设置为http://www.zrt.local:8080
。 - 另外,响应头中也携带了
Set-Cookie
字段,尝试对 Cookie 进行修改。如果操作失败,将会抛出异常。