我通过自定义标题“登录”向我的Rest Webservice发出了一个AJAX请求。
这是我的休息配置:
restConfiguration()
.component("netty4-http")
.bindingMode(RestBindingMode.json)
.dataFormatProperty("prettyPrint", "true")
.enableCORS(true)
.corsAllowCredentials(true)
.corsHeaderProperty("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, login")
.contextPath(contextPath).host(host).port(port);
我对OPTIONS预检请求得到200响应,但“登录”标题不是Access-Control-Allow-Headers,我的浏览器从不发送实际请求。
此外,我还没有为我的路线做任何配置。
这是我的请求标题
User-Agent:Mozilla / 5.0(Windows NT 10.0; Win64; x64; rv:58.0) Gecko / 20100101 Firefox / 58.0
接受: text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8
接受语言:fr,fr-FR; q = 0.8,en-US; q = 0.5,en; q = 0.3
Accept-Encoding:gzip,deflate
访问控制请求方法:GET
Access-Control-Request-Headers:login
DNT:1
连接:保持活力
并回复标题:
内容长度:0
接受: text / html的,应用/ XHTML + xml的,应用/ XML; Q = 0.9, / 的; Q = 0.8
Accept-Encoding:gzip,deflate
接受语言:fr,fr-FR; q = 0.8,en-US; q = 0.5,en; q = 0.3
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Origin,Accept,X-Requested-With, 内容类型,访问控制请求方法, 访问控制请求报头
访问控制 - 允许 - 方法:GET,HEAD,POST,PUT,DELETE,TRACE, 选项,连接,补丁
Access-Control-Allow-Origin:http://127.0.0.1:8081
Access-Control-Max-Age:3600
Access-Control-Request-Headers:login
访问控制请求方法:GET
breadcrumbId:ID-resitt-ws-1521624297667-0-6
DNT:1
User-Agent:Mozilla / 5.0(Windows NT 10.0; Win64; x64; rv:58.0) Gecko / 20100101 Firefox / 58.0
连接:keep-alive(modifié)
我觉得我的角色配置并没有改变我的情况。
答案 0 :(得分:2)
我们找到了答案,.enableCORS(true)
必须放在.contextPath(contextPath).host(host).port(port)
行之后。
restConfiguration()
.component("netty4-http")
.bindingMode(RestBindingMode.json)
.dataFormatProperty("prettyPrint", "true")
.contextPath(contextPath).host(host).port(port)
.enableCORS(true)
.corsAllowCredentials(true)
.corsHeaderProperty("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, login");
答案 1 :(得分:0)
在我的情况下,骆驼引发异常并返回500错误时,http响应中的CORS标头不在其中。