withCredentials: false ok 解决了问题
上午同事调试后台接口,原有的接口出现了这个问题,找到方法如下:
原因:
在CORS中,Credential不接受http响应首部中的‘Access-Control-Allow-Origin’设置为通配符‘*’
出了什么问题?
CORS 请求发出时,已经设定了credentials,但服务端配置了http响应首部 Access-Control-Allow-Origin
的值为通配符 ("*"
) ,而这与使用credentials相悖。
要在客户端改正这个问题,只需要确保发出 CORS 请求时将credential设置为false。
- 如果使用
XMLHttpRequest
发出请求,确保未将withCredentials
设置为true。
- 如果使用 Server-sent events, 确保
EventSource.withCredentials
的值为false
(false为默认值)。 - 如果使用 Fetch API,确保
Request.credentials
的值为"omit"
.
如果还不成功,则需要修改服务端,可能需要修改 Access-Control-Allow-Origin
的值,来为客户端所能够加载资源的源予以授权。