Angular 在WSO2 API管理器中放置/配置CORS头访问控制暴露头的位置

Angular 在WSO2 API管理器中放置/配置CORS头访问控制暴露头的位置,angular,wso2,wso2-am,wso2carbon,angular2-services,Angular,Wso2,Wso2 Am,Wso2carbon,Angular2 Services,我在访问CORS场景下的响应头时遇到问题。 我正在打一个CORS电话。因此,我在API管理器中配置了我的API配置,以接受CORS请求(也就是说,为我的REST端点启用了CORS) 但是当我的应用程序(Angular2应用程序)发出post请求时,它(http.post)看不到响应头。我在ChromeDevTools中检查了远程服务器接收到的浏览器内容,结果显示所有预期的响应头都在浏览器中接收到。显然,Angular没有将其传递给我的代码,我无法访问头文件。冈特,建议我检查一下CORS头 访问控

我在访问CORS场景下的响应头时遇到问题。 我正在打一个CORS电话。因此,我在API管理器中配置了我的API配置,以接受CORS请求(也就是说,为我的REST端点启用了CORS)

但是当我的应用程序(Angular2应用程序)发出post请求时,它(http.post)看不到响应头。我在ChromeDevTools中检查了远程服务器接收到的浏览器内容,结果显示所有预期的响应头都在浏览器中接收到。显然,Angular没有将其传递给我的代码,我无法访问头文件。冈特,建议我检查一下CORS头

访问控制公开头文件

我的问题: 启用CORS时,我在哪里可以告诉WSO2 API管理器传递或设置此标头?我在api-manager.xml中进行了尝试,但在重启后没有看到预期的头(在我的例子中是头“位置”)


APIM开箱即用支持
访问控制允许标题
,但不支持
访问控制公开标题

但您也可以将APIM配置为发送该标头。为此,您可以创建一个如下所示的序列,并将其附加到API中

<sequence xmlns="http://ws.apache.org/ns/synapse" name="_cors_request_handler_">
     <property name="Access-Control-Expose-Headers" value="Location"  scope="transport" type="STRING"/>
</sequence>

解释如何将这样的序列文件应用于特定API或全局应用于所有API

[更新-2019]

现在,默认情况下,APIM在序列目录中有一个CORS序列。您可以相应地更新它


APIM 3.0支持
访问控制公开标题
开箱即用。

Bhathiya,非常感谢!你的反馈对我帮助很大!我已经创建了一个序列(与你的帖子类似),对它进行了测试,结果成功了!显然,Angular2的Http客户端正在积极地检查这个CORS头。由于我有许多Angular2应用程序通过Http客户端(@Angular2/Http)连接到我的API网关,因此我需要配置APIM来处理此标头的设置(无论是默认设置、手动设置还是全局设置)。我将深入文档,阅读有关通过中介进行自定义的更多信息。谢谢!