如果 CORS 标头“Access-Control-Allow-Origin”为“*”,则不支持凭据

Vit*_*llo 7 firefox google-chrome xmlhttprequest spring-boot angular

我的应用程序在 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,it;q=0.8,en-US;q=0.5,en;q=0.3 接受编码: gzip, deflate 访问控制请求方法: GET 访问-Control-Request-Headers: iv-groups,iv-user,x-xsrf-token 来源: http://localhost:4200连接: keep-alive 缓存控制: max-age=0

java应用程序的响应是:

HTTP/1.1 200 Set-Cookie: JSESSIONID=70A5ED7E8D32DCEE55991D3945994AB0; 路径=/blalab;HttpOnly 设置 Cookie:XSRF-TOKEN=35ad4230-b664-400c-84c0-7d06877bf05d;路径=/ 变化:起源 变化:访问控制请求方法 变化:访问控制请求标头 访问控制允许来源: http://localhost:4200访问控制允许方法:GET、POST ,PUT,DELETE,HEAD,OPTIONS 访问控制允许标头:iv-groups、iv-user、x-xsrf-token 访问控制允许凭据:true 访问控制最大年龄:1800 允许:GET 、HEAD、POST、PUT、DELETE、TRACE、OPTIONS、PATCH X-Content-Type-Options:nosniff X-XSS-Protection:1;mode=block Cache-Control: no-cache, no-store, max-age=0, Must-revalidate Pragma: no-cache 过期: 0 X-Frame-Options: DENY 内容长度: 0 日期: 11 月 22 日星期四2018 年 08:31:18(格林威治标准时间)

对于 Firefox,此响应是控制台上的 CORS 违规,它会写入 Credential is not supported if CORS header Access-Control-Allow-Originis *

对于谷歌浏览器,请求正常并显示内容。

Lud*_*wig 5

如果您在客户端请求中使用withCredentials ,就会发生这种情况。在这种情况下,您可以修改服务器端以检查允许的引用者并在 Access-Control-Allow-Origin 标头中发送正确的 url。如果您不使用凭据,则接受 *。

更多信息可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSNotSupportingCredentials

  • 但是您如何看到标头中包含的服务器响应 Access-Control-Allow-Origin: http://localhost:4200 而不是 Access-Control-Allow-Origin: * 在 google chrome 中总是没问题,但在 firefox 中似乎有问题总是在那里。 (2认同)