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

如何在不使用API管理器的情况下在Mule 4中配置CORS?,mule,mule-studio,anypoint-studio,mulesoft,Mule,Mule Studio,Anypoint Studio,Mulesoft,我们正在尝试从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-int

我们正在尝试从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 manager允许您将网关逻辑(CORS协商、身份验证/授权、流量管理等)排除在Mule应用程序之外。但是,如果这是一个内部应用程序,并且API网关没有真正带来好处,那么有一种方法可以在Mule应用程序中处理CORS:

  • 在API中实现选项方法。这必须在其他来源将调用或尝试的所有资源上独立完成(不确定可能性,尤其是在APIKitRouter就位的情况下),在正则表达式模式上实现选项以处理所有资源
  • 返回侦听器上的Access Control Allow Origin标头,其中包含尝试访问请求的源。还添加适当的访问控制允许方法,以及具有适当值的访问控制允许源标题

  • 拦截器可能用于相同的目的,但尝试它是徒劳的。

    API manager允许您将网关逻辑(CORS协商、身份验证/授权、流量管理等)排除在Mule应用程序之外。但是,如果这是一个内部应用程序,并且API网关没有真正带来好处,那么有一种方法可以在Mule应用程序中处理CORS:

  • 在API中实现选项方法。这必须在其他来源将调用或尝试的所有资源上独立完成(不确定可能性,尤其是在APIKitRouter就位的情况下),在正则表达式模式上实现选项以处理所有资源
  • 返回侦听器上的Access Control Allow Origin标头,其中包含尝试访问请求的源。还添加适当的访问控制允许方法,以及具有适当值的访问控制允许源标题

  • 拦截器可能用于相同的目的,但尝试它是徒劳的。

    感谢Amaresh,它成功了。有没有一种更通用的方法来实现这一点,而不是为每个服务调用实现options API?谢谢Amaresh,它成功了。有没有一种更通用的方法来实现这一点,而不是为每个服务调用实现options API?