2016-11-10 33 views
2

我在CORS场景下访问我的响应头时遇到问题。 我在做一个CORS电话。因此,我在API管理器中配置了我的API配置,以接受CORS请求(即,为我的REST端点启用了CORS)。何处放置/配置CORS头WSO2 API管理器中的Access-Control-Expose-Headers

但是,当我的应用程序(Angular2应用程序)做了一个发布请求(http.post)没有看到响应头。我检查了Chrome Devtools浏览器正在通过远程服务器接收的内容,结果发现所有预期的响应头都在浏览器中收到。显然,Angular不会将它传递给我的代码,我无法访问标题。冈特,建议我来检查CORS头

访问控制展露报头

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

Angular2 's Http.post is not returning headers in the response of a POST method invocation

回答

2

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> 

This doc解释如何这样一个序列文件搞一个特定的API或全球范围内所有的API。

+0

Bhathiya,非常感谢!您的反馈帮助了我很多!我已经创建了一个序列(与你的文章相同),测试它,它工作!显然,Angular2的Http客户端正在主动检查这个CORS头部。因为我有很多通过Http客户端(@ angular2/http)连接到我的API网关的Angular2应用程序,所以我需要配置APIM来处理这个标头的设置(无论是手动还是全局的默认设置)。 docs阅读更多关于通过中介定制。谢谢! – user2120188