gpt4 book ai didi

java - Mule 3.7 Apikit CORS - 访问控制允许来源

转载 作者:行者123 更新时间:2023-11-29 03:00:44 25 4
gpt4 key购买 nike

我使用带有 APIKit + RAML 的 Mule 3.7。缺少有关 mule 的 http 响应构建器等的文档。

Http Credentials 不适用于 Access-Control-Allow-Origin 的 Wildcard,因此需要删除通配符,并将该值动态设置为消息 header 中的来源。

错误:当凭据标志为真时,不能在“Access-Control-Allow-Origin” header 中使用通配符“*”。产地' http://localhost:8080 ' 因此不允许访问。

如何将 Access-Control-Allow-Origin 值设置为#[message.inboundProperties['origin']]

<flow name="api-main">
<http:listener config-ref="api-httpListenerConfig" path="/api/*" doc:name="HTTP">
<http:response-builder>
<http:header headerName="Access-Control-Allow-Origin" value="*"/>
</http:response-builder>
</http:listener>
<apikit:router config-ref="api-main-config" doc:name="APIkit Router"/>
<exception-strategy ref="component-registry-apiKitGlobalExceptionMapping" doc:name="Reference Exception Strategy"/>
</flow>

最佳答案

这个问题不仅仅是向响应 header 添加 header 。

如果您将 allow credentials header 设置为 true,实际浏览器将使用 OPTION 方法发送预检请求以“测试”并允许源跨源请求。引用: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

仅设置 Access-Control-Allow-Origin 响应 header 是行不通的。

<set-property propertyName="Access-Control-Allow-Origin" value="*">

幸运的是有一个 mule-module 来处理 CORS 请求,但它缺少文档。您需要在 app.xml 的开头设置此配置。

<cors:config name="Cors_Configuration" doc:name="Cors Configuration">
<cors:origins>
<cors:origin url="http://localhost:8080">
<cors:methods>
<cors:method>POST</cors:method>
<cors:method>DELETE</cors:method>
<cors:method>PUT</cors:method>
<cors:method>GET</cors:method>
</cors:methods>
<cors:headers>
<cors:header>content-type</cors:header>
</cors:headers>
</cors:origin>
</cors:origins>
</cors:config>

并在 APIkit 路由器之前使用它。

<http:inbound-endpoint address="http://localhost:8081/api" doc:name="HTTP" exchange-pattern="request-response"/>
<cors:validate config-ref="Cors_Configuration" publicResource="false" acceptsCredentials="true" doc:name="CORS Validate”/>
<apikit:router config-ref=“apiConfig" doc:name="APIkit Router”/>

注意:实际上您需要手动下载 mule-cors.xsd 定义文件,并复制到/resources 文件夹。将此 xmlns 和 xsi 附加到您的 app.xml

<mule xmlns:cors="http://www.mulesoft.org/schema/mule/cors"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/cors classpath:/mule-cors.xsd" >

mule-cors.xsd:https://github.com/mulesoft/mule-module-cors/blob/master/src/main/resources/META-INF/mule-cors.xsd

引用文献:https://github.com/mulesoft/apikit/issues/27

关于java - Mule 3.7 Apikit CORS - 访问控制允许来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35162476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com