cors - 跨域(骆驼路线和 angularjs)
问题描述
嗨,我正在尝试使用 apache camel 为 angularjs 提供服务,但出现错误:如果我使用 restConfiguration,则请求的资源上不存在“Access-Control-Allow-Origin”标头。出了点问题
在我的蓝图中,我启用了 CROS 并设置了这样的属性标题,但不起作用:
<restConfiguration bindingMode="json" component="jetty" enableCORS="true">
<dataFormatProperty key="prettyPrint" value="true" />
<corsHeaders key="Access-Control-Allow-Methods" value="GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH"></corsHeaders>
<corsHeaders key="Access-Control-Allow-Origin" value="*"></corsHeaders>
<corsHeaders key="Access-Control-Allow-Headers" value="Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"></corsHeaders>
<corsHeaders key="Access-Control-Max-Age" value="3600"></corsHeaders>
</restConfiguration>
如果我删除其余配置并设置如下标题,我没有错误。
<route id="jetty" streamCache="true">
<from uri="jetty:http://0.0.0.0:9100/ifom/miki?matchOnUriPrefix=true"/>
<to uri="jetty:http://localhost:8080/om/miki?bridgeEndpoint=true&throwExceptionOnFailure=false"/>
<log message="jetty-done header: ${headers}"/>
<setHeader headerName="Access-Control-Allow-Headers"><constant>X-Auth-Token, Content-Type</constant></setHeader>
<setHeader headerName="Access-Control-Allow-Origin"><constant>*</constant></setHeader>
<setHeader headerName="Access-Control-Allow-Methods"><constant>OPTIONS, POST</constant></setHeader>
</route>
为什么 restConfiguration 不起作用?谢谢
解决方案
我最终通过为 Camel 和 AngularJs 上的 Access-Control-Allow-Headers 和 Access-Control-Request-Headers 设置相同的值来解决这个问题。
AngularJs:
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Request-Headers': 'access-control-allow-methods,access-control-allow-origin,authorization,content-type',
'Access-Control-Allow-Headers': 'access-control-allow-methods,access-control-allow-origin,authorization,content-type',
'Access-Control-Allow-Methods': 'GET, DELETE, POST, OPTIONS, PUT',
}
骆驼:
.setHeader("Access-Control-Allow-Origin", constant("*"))
.setHeader("Access-Control-Allow-Headers", constant("access-control-allow-methods,access-control-allow-origin,authorization,content-type"))
.setHeader("Access-Control-Allow-Methods", constant("GET, DELETE, POST, OPTIONS, PUT"))
推荐阅读
- c++ - 是 reinterpret_cast
(myTypePtr) 假设指向一个数组? - c++ - 如何将零填充的多维数组传递给 C++ 中的函数?
- javascript - React Router DOM 仅在需要时加载组件
- python - 用于合并特定行的 Pandas Dataframe 操作
- c# - 如何从 Business Central 获取数据?
- c# - Excel/VSTO:错误 0x80028018 仅在直接绑定到 interop.-provided 属性时
- python - 获取与语句匹配的数组中的任何元素
- python - 如何打印表格
- javascript - 如何将 Chrome 开发人员工具的响应打印到我的 UI 上?
- html - 如何在html中比较没有时间的日期