[英]Include CORS Headers in WSO2 APIM 4.0.0 Token API Response
[英]WSO2 Api Manger 3.0.0 Token API CORS issue with Angular Application
我一直在使用 WSO2 API Manager 3.0.0 單節點設置。 我面臨着調用用於獲取令牌的令牌 API(可從https://host:port/token?grant_type=client_credentials 獲得)的挑戰。 在檢查了幾個博客后,我發現有幾個文件需要更改。 論文是——
Files: _TokenAPI_.xml and _RevokeAPI_.xml
Files Location: /usr/lib64/wso2/wso2am/3.0.0/repository/deployment/server/synapse-configs/default/api
我已按照以下代碼進行了更改 -
<handlers>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler">
<property name="apiImplementationType" value="ENDPOINT"/>
<property name="allowHeaders" value="authorization,Access-Control-Allow-Origin,Content-Type,SOAPAction"/>
<property name="allowedOrigins" value="*"/>
<property name="AuthorizationHeader" value="Authorization"/>
<property name="allowedMethods" value="GET,PUT,POST,DELETE,PATCH,OPTIONS"/>
<property name="allowCredentials" value="true"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerCacheExtensionHandler"/>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.common.SynapsePropertiesHandler"/>
</handlers>
我正在使用 Angular 應用程序調用令牌 API,但調用仍然不成功並導致 CORS 問題。 我還嘗試從文件名中刪除下划線( _ )並將它們重命名為 TokenAPI.xml 和 RevokeAPI.xml 但仍然沒有運氣。 你能幫忙嗎?下面是完整的 XML
_TokenAPI_.xml
<api xmlns="http://ws.apache.org/ns/synapse" name="_WSO2AMTokenAPI_" context="/token"> <resource methods="POST" url-mapping="/*" faultSequence="_token_fault_"> <inSequence> <property name="uri.var.portnum" expression="get-property('keyManager.port')"/> <property name="uri.var.hostname" expression="get-property('keyManager.hostname')"/> <send> <endpoint> <http uri-template="https://{uri.var.hostname}:{uri.var.portnum}/oauth2/token"> <timeout> <duration>60000</duration> <responseAction>fault</responseAction> </timeout> </http> </endpoint> </send> </inSequence> <outSequence> <send/> </outSequence> </resource> <handlers> <handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler"> <property name="apiImplementationType" value="ENDPOINT"/> <property name="allowHeaders" value="authorization,Access-Control-Allow-Origin,Content-Type,SOAPAction"/> <property name="allowedOrigins" value="*"/> <property name="AuthorizationHeader" value="Authorization"/> <property name="allowedMethods" value="GET,PUT,POST,DELETE,PATCH,OPTIONS"/> <property name="allowCredentials" value="true"/> </handler> <handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerCacheExtensionHandler"/> <handler class="org.wso2.carbon.apimgt.gateway.handlers.common.SynapsePropertiesHandler"/> </handlers> </api>
[編輯] 我的 API 管理器和 Angular 應用程序運行在不同的環境中,即不同的虛擬機。
您可以使用 API 網關 CORS 處理程序
<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler">
在令牌 API 中也是如此。 添加后,您的_TokenAPI_.xml
文件應如下所示
<api xmlns="http://ws.apache.org/ns/synapse" name="_WSO2AMTokenAPI_" context="/token">
<resource methods="POST" url-mapping="/*" faultSequence="_token_fault_">
<inSequence>
<property name="uri.var.portnum" expression="get-property('keyManager.port')"/>
<property name="uri.var.hostname" expression="get-property('keyManager.hostname')"/>
<send>
<endpoint>
<http uri-template="https://{uri.var.hostname}:{uri.var.portnum}/oauth2/token">
<timeout>
<duration>60000</duration>
<responseAction>fault</responseAction>
</timeout>
</http>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
</resource>
<handlers>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerCacheExtensionHandler"/>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler">
<property name="apiImplementationType" value="ENDPOINT"/>
<property name="AuthorizationHeader" value="Authorization"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.common.SynapsePropertiesHandler"/>
</handlers>
</api>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.