在 WSO2 API 管理器中放置/配置 CORS header Access-Control-Expose-Headers 的位置

Where to put / configure CORS header Access-Control-Expose-Headers in WSO2 API Manager

我在 CORS 场景下访问我的响应 header 时遇到问题。 我正在进行 CORS 调用。因此,我在 API 管理器中配置了我的 API 配置以接受 CORS 请求(即,为我的 REST 端点启用了 CORS)。

但是当我的应用程序 (Angular2 应用程序) 发出 post 请求时,它 (http.post) 没有看到响应 headers。我在 Chrome Devtools 中检查了浏览器从远程服务器接收到的内容,结果发现浏览器中收到了所有预期的响应 header。显然,Angular 没有将它传递给我的代码,我无法访问 header。 Gunter 建议我检查 CORS header

Access-Control-Expose-Headers

我的问题: 当启用 CORS 时,我在哪里可以告诉 WSO2 API 管理器通过或设置此 header?我在 api-manager.xml 中尝试过,但在重启后我没有看到预期的 header(在我的例子中是 header 'Location')。

APIM out-of-the-box 支持 Access-Control-Allow-Headers 但不支持 Access-Control-Expose-Headers.

但是您也可以配置 APIM 来发送 header。为此,您创建一个如下所示的序列并将其附加到您的 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>

This doc 解释了如何将这样的序列文件用于特定的 API 或全局用于所有 APIs。

[更新 - 2019]

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

并且 APIM 3.0 开箱即用地支持 Access-Control-Expose-Headers