我在 CORS 场景下访问响应 header 时遇到问题。 我正在调用 CORS 电话。因此,我在 API Manager 中配置了 API 配置以接受 CORS 请求(即为我的 REST 端点启用了 CORS)。
但是当我的应用程序(Angular2 应用程序)执行发布请求时,它(http.post)看不到响应 header 。我在 Chrome Devtools 中检查了浏览器从远程服务器接收到的内容,结果发现浏览器中收到了所有预期的响应 header 。显然,Angular 没有将其传递给我的代码,我无法访问 header 。 Gunter,建议我检查 CORS header
Access-Control-Expose-Headers
我的问题: 当启用 CORS 时,我可以在哪里告诉 WSO2 API Manager 传递 pass 或设置此 header ?我在 api-manager.xml 中尝试过,但重新启动后没有看到预期的 header (在我的例子中为 header “位置”)。
Angular2 's Http.post is not returning headers in the response of a POST method invocation
最佳答案
开箱即用的 APIM 支持 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 或全局所有 API 结合使用。
[更新 - 2019]
现在APIM默认在序列目录中有一个CORS序列。您可以相应地更新它。
APIM 3.0 开箱即用地支持 Access-Control-Expose-Headers
。
关于angular - 在 WSO2 API Manager 中放置/配置 CORS header Access-Control-Expose-Headers 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40524784/