mule - 如何在不使用 API 管理器的情况下在 Mule 4 中配置 CORS?
问题描述
我们正在尝试从 Angular 应用程序调用 mule 服务并收到 CORS 错误。
当我们在 global.xml 的 http 配置中添加 CORS 拦截器时,我们的项目遇到了问题。
<http:listener-config name="api-httpListenerConfig">
<http:listener-connection host="${http.host}" port="${http.private.port}" />
<http:listener-interceptors>
<http:cors-interceptor allowCredentials="true">
<http:origins>
<http:origin url="*" accessControlMaxAge="0">
<http:allowed-methods>
<http:method methodName="GET" />
<http:method methodName="POST" />
<http:method methodName="DELETE" />
<http:method methodName="OPTIONS" />
<http:method methodName="HEAD" />
<http:method methodName="PUT" />
</http:allowed-methods>
<http:allowed-headers>
<http:header headerName="X-Allow-Origin" />
</http:allowed-headers>
</http:origin>
</http:origins>
</http:cors-interceptor>
</http:listener-interceptors>
</http:listener-config>
GET 服务不应被浏览器中的 CORS 策略阻止。
解决方案
API 管理器允许您将网关逻辑(CORS 协商、身份验证/授权、流量管理等)排除在 Mule 应用程序之外。但是,如果这是一个内部应用程序并且没有真正受益于 API 网关,那么这里是在 Mule 应用程序中处理 CORS 的一种方法:
- 在你的 API 中实现 Options 方法。这必须在其他来源将调用或尝试的所有资源上独立完成(不确定可能性,尤其是在 APIKitRouter 到位的情况下)在正则表达式模式上实现选项以处理所有资源。
- 返回侦听器上的 Access-Control-Allow-Origin 标头以及尝试访问请求的来源。还要添加适当的 Access-Control-Allow-Methods 和 Access-Control-Allow-Origins 标头以及适当的值。
拦截器可能是出于同样的目的,但尝试它是徒劳的。
推荐阅读
- python - 从保留形状的现有数据集创建新的 HDF5 数据集
- spring - Spring Security Ldap Authentication Filter 中的大括号如何工作?
- firebase - 我怎样才能捕捉到让我的页面变慢的脚本?
- python - 如何从应该是字典的长字符串中创建数据框?
- python - Django 泊坞窗 Postgresql
- python - 使用 Apache 2 使用路由和静态文件调整转发到 Flask 应用程序
- date - Chart.js 使用 x 轴中反映实时间隔(不均匀分布)的日期创建折线图
- bash - “展开” yaml 文件
- django - 如何在 django 休息框架工作中序列化嵌套的泛型关系
- python-3.x - Python3 Execjs Module Run JS会弹出cscript.exe的形式,如何解决?