带骆驼的Cors配置
Posted
技术标签:
【中文标题】带骆驼的Cors配置【英文标题】:Cors configuration with camel 【发布时间】:2018-08-30 17:15:44 【问题描述】:我有一个对我的 Rest Web 服务的 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,而且我的浏览器从不发送实际请求。
我也没有在我的路线中为 cors 做任何配置。
这是我的请求标头
用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:58.0) 壁虎/20100101 火狐/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
接受编码:gzip,放气
访问控制请求方法:GET
访问控制请求标头:登录
来源:http://127.0.0.1:8081
DNT:1
连接:保持活动
以及响应标题:
内容长度:0
接受: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
接受编码:gzip、deflate
接受语言:fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
访问控制允许凭据:true
Access-Control-Allow-Headers:Origin、Accept、X-Requested-With、 内容类型、访问控制请求方法、 访问控制请求标头
访问控制允许方法:GET、HEAD、POST、PUT、DELETE、TRACE、 选项、连接、补丁
访问控制允许来源:http://127.0.0.1:8081
访问控制最大年龄:3600
访问控制请求标头:登录
访问控制请求方法:GET
breadcrumbId:ID-resitt-ws-1521624297667-0-6
DNT:1
来源:http://127.0.0.1:8081
用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:58.0) 壁虎/20100101 火狐/58.0
连接:保持活动(修改)
我觉得我的 cors 配置对我的情况没有任何改变。
【问题讨论】:
你用的是什么版本的骆驼,你用过最新的版本吗 【参考方案1】:我们找到了答案,.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");
【讨论】:
【参考方案2】:在我的情况下,当骆驼抛出异常并返回 500 错误时,CORS 标头不在 http 响应中。
【讨论】:
以上是关于带骆驼的Cors配置的主要内容,如果未能解决你的问题,请参考以下文章