2017-08-05 136 views
0

這種情況是這樣的:我正在開發一個Angular 2前端的Java EE應用程序。客戶端有一個通常用於服務靜態資源的Apache服務器和一個用於動態部分的Oracle Weblogic。問題在於默認情況下,由於同源策略,Angular 2應用程序和Weblogic服務器將無法相互通話。如何在Java後端正確部署Angular 2應用程序?

到目前爲止,我有3個可能的部署記方法:

  1. 成立於Apache的一個Reverse Proxy的REST端點指向到Weblogic

  2. 包裝的角應用在WAR/EAR和將其部署到Weblogic。所以我最終會得到類似於:用於UI的myserver/myapp和用於後端的myserver/myapp-rest。

  3. 將Angular應用程序打包成與Java後端相同的WAR。所以我最終將使用myserver作爲用戶界面,myserver/myapp/api作爲REST終端。

有第四個選項將設置CORS,但我擔心使用該方法的安全性。

哪種方法是正確的?

回答

1

如果允許您做出基礎決定,將apache web服務器更改爲nginx,我們切換到了nginx,並且在併發處理方面獲得了很多附加值。 在我們的項目中,角客戶端由nginx webserver提供服務,該服務器與tomcat 8.x(我們的應用服務器)上託管的java後端進行通信,在應用服務器之後還有幾層級的單獨數據庫服務器和彈性搜索服務器。

不要害怕設置CORS,您最終需要允許一些不源自您的域和端口的原始請求。

如果你的java技術棧有spring mvc,那麼設置CORS只是增加幾行配置而已。您甚至可以硬編碼您的角度網址,以允許後端服務器僅通過角度網址提供請求。 在普通的JavaEE世界中,CORS只是另一個過濾器或攔截器,您可以在其中設置所有允許的來源,http方法等的響應頭。這很簡單,您可以查看它。

了給定的選擇

    1. 似乎是合理和附加值,你得到的是你可以 代表SSL加密代理服務器。
  • 似乎很奇怪,你會想從動態內容服務器的靜態內容服務器,您的角度JS包,資產 等大多是靜態的分開,如果你把你的靜態服務器分開,然後 您可以配置無cookie的域,使 的服務速度更快。
  • 3與2相同。

我強烈建議CORS選項,從我過去的經驗。

+0

所以,CORS是要走的路。與我描述的其他方法相比,是否有任何優勢? – lordscales91

+0

編輯我的答案 – TruckDriver

相關問題