我們使用CRX DE lite/Adobe EM作爲Angularjs SPA UI /前端的後端。我們如何爲後端技術設置CORS?我們可以使用工具http://localhost:4502/crx/de/index.jsp更改設置。但我們不確定如何設置CORS。如何在CRXDE Lite/AEM中啓用CORS
請指教。
我們使用CRX DE lite/Adobe EM作爲Angularjs SPA UI /前端的後端。我們如何爲後端技術設置CORS?我們可以使用工具http://localhost:4502/crx/de/index.jsp更改設置。但我們不確定如何設置CORS。如何在CRXDE Lite/AEM中啓用CORS
請指教。
有兩個OSGi服務值得看的(雖然我從來沒有試圖讓他們)
我最初做的事情(起初)是創建一個實現AuthenticationInfoPostProcessor
的服務。在那裏,我設置以下標題:
,一切都適用於GET請求。但是,當我們嘗試POST時,我們遇到了瀏覽器發送的預購航班OPTIONS請求失敗的問題,因爲瀏覽器沒有使用login-token
cookie進行此操作。
然後我們嘗試了一個@SlingFiter
,然而,這屬於正常的吊索管道,因此它是在驗證後進行檢查的,所以沒有auth cookie,預先飛行總是失敗。
最後,我們實現了一個過濾器與以下注釋:
@Component(immediate = true)
@Service(value = Filter.class)
@Properties({ @Property(name = "pattern",
value = "/.*"),
@Property(name = Constants.SERVICE_RANKING,
intValue = 1000) })
的關鍵在這裏是pattern
屬性,它註冊了過濾器作爲Apache菲利克斯白板過濾器,而不是吊帶。 See here。因此,過濾器將爲OPTIONS設置CORS頭並返回,併爲其他所有內容設置CORS頭,並將請求傳遞給鏈中的下一個過濾器。
我不知道在AEM中啓用CORS的位置(或者如果可能的話,我會在OSGi控制檯http://localhost:4502/system/console/configMgr
的位置查看),但解決CORS問題的一種方法是公開AEM和前端在同一個域中,通過在Apache上設置代理應該相當容易。
在您的AEM發佈實例前面的Apache服務器,在httpd.conf
,你可以做這樣的事情:
ProxyPass /your-frontend http://whatever.it.runs.on/actual-path-to-the-frontend/
ProxyPassReverse /your-frontend http://whatever.it.runs.on/actual-path-to-the-frontend/
感謝您的想法tonied ....我使用nodejs做類似的事情。我只是試圖找到一種方法來刪除中間的這個反向代理服務器。 – Vijey