WSO2 API 管理器 CORS

标签 wso2 cors wso2-am

我想在我的 WSO2 API Manager 实例上为所有端点启用 CORS。
我已经阅读了文档(这很棒),它建议更改 存储库/conf/api-manager.xml 文件,因为其中有一个 CORS 配置节点(如下)。

<!--Configuration to enable/disable sending CORS headers in the Gateway response
    and define the Access-Control-Allow-Origin header value.-->
<CORSConfiguration>

    <!--Configuration to enable/disable sending CORS headers from the Gateway-->
    <Enabled>true</Enabled>

    <!--The value of the Access-Control-Allow-Origin header. Default values are
        API Store addresses, which is needed for swagger to function.-->
    <Access-Control-Allow-Origin>*</Access-Control-Allow-Origin>

    <!--Configure Access-Control-Allow-Methods-->
    <Access-Control-Allow-Methods>GET,PUT,POST,DELETE,PATCH,OPTIONS</Access-Control-Allow-Methods>

    <!--Configure Access-Control-Allow-Headers-->
    <Access-Control-Allow-Headers>authorization,Access-Control-Allow-Origin,Content-Type</Access-Control-Allow-Headers>

<!--Configure Access-Control-Allow-Credentials-->
<!-- Specifying this header to true means that the server allows cookies (or other user credentials) to be included on cross-origin requests.
     It is false by default and if you set it to true then make sure that the Access-Control-Allow-Origin header does not contain the wildcard (*)
-->
<Access-Control-Allow-Credentials>true</Access-Control-Allow-Credentials>

</CORSConfiguration>

不过,此文件似乎并未将此 CORS 配置应用于所有端点。在向我发布的 API 端点发出请求时,我收到了正确的访问控制 header ,但在我点击 token 端点时没有收到它们(默认 - '/token'、'/revoke')。

我怎样才能做到这一点?

最佳答案

CORS 配置对使用 Publisher 应用程序创建的 API 有效。此配置不包括 token API(-'/token'、'/revoke')。

CORS header 使用处理程序处理

org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler

如果您在/repository/deployment/server/synapse-configs/default/api 中打开 api 的突触配置,您将找到此处理程序。

您也可以将此处理程序设置为 RevokeAPI.xml 和 TokenAPI.xml。 (它们位于相同的位置/repository/deployment/server/synapse-configs/default/api)。在配置文件中应该是这样的
 <handlers>
    <handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler">
     <property name="apiImplementationType" value="ENDPOINT"/>
    </handler>
    <handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerCacheExtensionHandler"/>
    <handler class="org.wso2.carbon.apimgt.gateway.handlers.common.SynapsePropertiesHandler"/>
</handlers>

关于WSO2 API 管理器 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35305316/

相关文章:

ssl - WSO2 API 管理器,无效。无法找到到请求目标的有效证书路径

xpath - wso2 xpath对属性值的选择

php - WSO2 WSF/PHP 安装问题(需要 C 开发人员帮助)

WSO2-如何从Javascript中介程序中登录

ASP.NET - 如何通过 Web.config 从 HTTP 重定向到 HTTPS 和特定来源 [CORS 策略问题]

javascript - 这是跨域还是跨协议(protocol)请求?

python - Angular2 和 Django : CSRF Token Headache

oauth-2.0 - 如何确定访问 token 使用了哪种授予类型

validation - 如何从 WSO2 API Manager 验证 JWT

https - 证书中的主机名与 :<>! =<> WSO2 APIM 不匹配