带骆驼的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配置的主要内容,如果未能解决你的问题,请参考以下文章

当目的地不可用时如何停止使用骆驼路线中的消息

骆驼运行时计时器更改

骆驼路由消息到replyTo和错误队列

Couchdb 的 CORS 配置

在egg中配置cors

CORS 错误:配置 Symfony 5 以接受 CORS 的正确方法是啥?