如何在不使用API​​管理器的情况下在Mule 4中配置CORS?

时间:2019-02-13 17:22:26

标签: mule mule-studio anypoint-studio mulesoft

我们正试图从angular应用程序调用the子服务,并收到CORS错误。

在global.xml的http config中添加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策略阻止。

1 个答案:

答案 0 :(得分:1)

API管理器使您可以将网关逻辑(CORS协商,身份验证/授权,流量管理等)保留在Mule应用程序之外。但是,如果这是一个内部应用程序,并且不能真正从API网关中受益,则这是在Mule应用程序中处理CORS的一种方法:

    API中的
  1. 实施选项方法。这将必须在另一个来源将调用或尝试的所有资源上独立完成(不确定是否可能,尤其是在使用API​​KitRouter的情况下),然后在正则表达式模式下实现选项以处理所有资源。
  2. 使用试图访问请求的源返回侦听器上的Access-Control-Allow-Origin标头。还要添加适当的Access-Control-Allow-Methods和Access-Control-Allow-Origins标头,并提供适当的值。

拦截器可能是出于相同的目的,但尝试没有效果。