![](/img/trans.png)
[英]Angular JS SPA: How to Angular Controller SPA to call Angular service?
[英]java API and angular SPA in the same Azure App Service
我可以在一個單一應用程序服務中將我的Java API作為虛擬應用程序在/ api下運行,而我的前端角度SPA在/下運行嗎?
在我的應用程序設置中:
部署兩個虛擬應用程序后,當我轉到應用程序服務URL時,可以正確獲取前端,但是也有對API的調用,該API處於等待狀態幾分鍾,然后出現500錯誤。 如果我嘗試直接訪問API,則會出現同樣的500錯誤。
該API是使用Spring構建的,它是我設置的web.config文件:
<applicationInitialization doAppInitAfterRestart="true">
<add initializationPage="/api"/>
<add initializationPage="/api/health"/>
<add initializationPage="/api/info"/>
</applicationInitialization>
我希望API和SPA都在同一個域中。 目前,可以從任何域訪問API,對此沒有任何限制。
我究竟做錯了什么? 我該如何運作?
根據我的經驗,將Web項目部署到Azure App Service時不必創建virtual directory
。
在門戶網站上設置application settings
后,
您可以將項目生成的war package
放在KUDU
上的D:\\home\\site\\wwwroot\\webapps
目錄下,然后重新啟動應用程序。
請注意,如果將war軟件包的名稱設置為ROOT.war
,則可以直接通過domain name
(例如http://jaygong.azurewebsites.net/
訪問應用程序,而無需在其中添加war軟件包的名稱。您的請求網址。
您也可以直接通過路徑訪問靜態文件,例如http://jaygong.azurewebsites.net/image/image.jpg
。
更新的答案
根據我的經驗,您可以使用兩種方法在Spring Boot應用程序服務中調用另一個應用程序服務API。
1. spring boot的首頁調用了background方法,通過HTTP
請求在另一個應用程序服務API和自身之間傳遞消息,並將結果返回到前端。 以這種方式不存在CORS
問題。
2. spring boot的首頁直接調用另一個應用程序服務API。 您可以參考下面的js,該線程在此線程中啟用CORS AngularJS發送HTTP POST請求
allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
if ('OPTIONS' === req.method) {
res.send(200);
} else {
next();
}
};
app.use(allowCrossDomain);
希望對您有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.