在 WSO2 API Manager 中放置/配置 CORS 标头 Access-Control-Expose-Headers 的位置

use*_*188 4 wso2 wso2-api-manager angular2-services angular

我在 CORS 场景下访问响应标头时遇到问题。我正在拨打 CORS 电话。因此,我在 API Manager 中配置了 API 配置以接受 CORS 请求(即为我的 REST 端点启用了 CORS)。

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

访问控制公开标头

我的问题: 当启用 CORS 时,我可以在哪里告诉 WSO2 API Manager 传递 pass 或设置此标头?我在 api-manager.xml 中尝试过,但重新启动后没有看到预期的标头(在我的例子中为标头“位置”)。

Angular2 的 Http.post 在 POST 方法调用的响应中不返回标头

Bee*_*Bee 6

APIM 开箱即用支持,Access-Control-Allow-Headers但不支持Access-Control-Expose-Headers.

但您也可以配置 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>
Run Code Online (Sandbox Code Playgroud)

本文档解释了如何将此类序列文件与特定 API 或全局所有 API 结合起来。

[更新 - 2019]

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

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