与骆驼配置的Cors

时间:2018-03-21 14:20:08

标签: rest cors apache-camel

我通过自定义标题“登录”向我的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

     

原产地:http://127.0.0.1:8081

     

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

     

原产地:http://127.0.0.1:8081

     

User-Agent:Mozilla / 5.0(Windows NT 10.0; Win64; x64; rv:58.0)   Gecko / 20100101 Firefox / 58.0

     

连接:keep-alive(modifié)

我觉得我的角色配置并没有改变我的情况。

2 个答案:

答案 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标头不在其中。