WSO2 API 经理 CORS
WSO2 API Manager CORS
我想在我的 WSO2 API 管理器实例上为所有端点启用 CORS。
我已经阅读了文档(很棒),它建议将 repository/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 端点发出请求时,我收到了正确的访问控制 headers,但是当我点击令牌端点时我没有收到它们(默认 - '/token','/revoke ').
我怎样才能做到这一点?
api-manager.xml 中的 CORS 配置将仅应用于通过 API 管理器创建的 API。它不会将这些配置应用于 Token API,例如 /token 和 /revoke。
令牌API相关配置位于{PRODUCT_HOME}/repository/deployment/server/synapse-configs/default/api
目录。
如果需要,您可以编辑 _TokenAPI_.xml
并添加 CORS headers。您可以参考 [1] 作为有用的资源。
[1] - http://blog.lakmali.com/2013/10/how-to-add-additional-headers-to-wso2.html
CORS 配置对使用 Publisher 应用程序创建的 API 有效。令牌 apis (- '/token', '/revoke') 不包含在此配置中。
CORS headers 使用处理程序处理
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。 我已经阅读了文档(很棒),它建议将 repository/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 端点发出请求时,我收到了正确的访问控制 headers,但是当我点击令牌端点时我没有收到它们(默认 - '/token','/revoke ').
我怎样才能做到这一点?
api-manager.xml 中的 CORS 配置将仅应用于通过 API 管理器创建的 API。它不会将这些配置应用于 Token API,例如 /token 和 /revoke。
令牌API相关配置位于{PRODUCT_HOME}/repository/deployment/server/synapse-configs/default/api
目录。
如果需要,您可以编辑 _TokenAPI_.xml
并添加 CORS headers。您可以参考 [1] 作为有用的资源。
[1] - http://blog.lakmali.com/2013/10/how-to-add-additional-headers-to-wso2.html
CORS 配置对使用 Publisher 应用程序创建的 API 有效。令牌 apis (- '/token', '/revoke') 不包含在此配置中。
CORS headers 使用处理程序处理
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>