2016-11-10 47 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