我的应用程序在Java Web应用程序中执行一些REST请求。这些请求是CORS请求,因此浏览器每次在真正的OPTION预检之前执行一次。 每个请求都类似于
主机:localhost:8080用户代理:Mozilla / 5.0(Windows NT 6.1; Win64; x64; rv:63.0)Gecko / 20100101 Firefox / 63.0接受: text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8 接受语言:it-IT,它; q = 0.8,en-US; q = 0.5,en; q = 0.3接受编码: gzip,缩小访问控制请求方法:GET 访问控制请求标头:iv组,iv用户,x-xsrf令牌来源: http://localhost:4200连接:保持活动状态高速缓存控制:max-age = 0
java应用程序响应为:
HTTP / 1.1 200 Set-Cookie:JSESSIONID = 70A5ED7E8D32DCEE55991D3945994AB0; 路径= / lablablab; HttpOnly Set-Cookie: XSRF-TOKEN = 35ad4230-b664-400c-84c0-7d06877bf05d;路径= /变化:原点 变化:访问控制请求方法变化: 访问控制请求标头访问控制允许源: http://localhost:4200访问控制允许方法: GET,POST,PUT,DELETE,HEAD,OPTIONS访问控制允许头: iv组,iv用户,x-xsrf令牌访问控制权限凭证: true Access-Control-Max-Age:1800允许:GET,HEAD,POST,PUT,DELETE, 跟踪,选项,补丁X内容类型选项:nosniff X-XSS-Protection:1; mode = block缓存控制:无缓存,无存储, max-age = 0,必须重新验证语法:no-cache过期:0 X帧选项:拒绝内容长度:0日期:2018年11月22日,星期四 格林尼治标准时间08:31:18
对于firefox,如果CORS标头Access-Control-Allow-Origin
为*
,则此响应在控制台上违反了CORS,它不写入凭据。
对于谷歌浏览器,请求正常,并且显示内容。
答案 0 :(得分:1)
如果您在客户端请求中使用 withCredentials ,则会发生这种情况。在这种情况下,您可以修改服务器端以检查允许的引用,并在Access-Control-Allow-Origin标头中发送正确的url。如果您不使用凭据,*将被接受。
可以在此处找到更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSNotSupportingCredentials
答案 1 :(得分:0)
对于所有来这里搜索此问题的人:
我安装了扩展名(CORS Unblock),该扩展名已覆盖标题。关闭或卸载它可以解决问题。
答案 2 :(得分:-1)
此配置对我有用。请注意客户端withCredentials: true
客户端配置:
config = {
url:'http://somedomain',
method:'post',
withCredentials: true,
data:{myfield:"myvalue"}
};
axios.request(config);
服务器端配置:
Access-Control-Allow-Credentials true
Access-Control-Allow-Headers X-PINGOTHER, Content-Type
Access-Control-Allow-Methods GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
Access-Control-Allow-Origin: http://localhost:4200 // WILD CARD WILL NOT WORK WHEN POSTING