2017-08-14 17 views
0

我使用Flask作爲服務器端框架,並將Angular作爲客戶端框架。在服務器端框架中使用Angular

對我來說,引用Flask使用的index.html模板文件中的dist文件夾中編譯的Angular js文件似乎相當簡單。

我有我的API設置與相同的Flask服務器。

我的問題是這樣的:

當我使用ng build,然後運行python flask-server.py一切工作正常。

但是當我運行ng serve時,我們只能使用應用程序的前端邏輯,並且不能與服務器通信。

即使我運行ng servepython flask-server.py來使用API​​,我會在我的機器上有2臺服務器進行通信時遇到交叉來源問題。

這不是什麼大不了的事,但是我在用ng test進行測試時,預計會出現同樣的問題。測試是端到端的非常重要的。

任何想法,如果我正在接近這個正確的方式?

我能想到的唯一解決方案是在具有API功能的某個遠程計算機上擁有一個完全獨立的服務器,因此我可以使用ng serve測試我的Angular應用程序,並且仍然調用API而沒有任何交叉來源問題。

但是我想盡可能避免這種情況。

我想在同一臺機器上進行前端和後端開發。包括測試。

+0

你怎麼可能有交叉的起源問題的服務器上?您沒有提出任何跨域請求 –

+0

當我執行服務時,它在它自己的服務器上運行Angular應用程序..完全獨立於Flask。我需要用於測試的'ng test'也是如此。即,它在端口4200上運行。當我運行我的Flask服務器時,它在端口5000上。同一臺機器上的兩個不同的服務器...跨源問題 –

+0

跨域是瀏覽器的事情。這個問題在同一臺機器上運行的兩臺服務器上怎麼會出現? –

回答

0

這兩個選項是合理的:

  1. 就像你說的,你可以從其中有一個跨源配置的服務器滿足您的所有支持的代碼。

  2. 爲您的前端(角度)和後端在不同的端口上設置交叉原點配置;

納克服務--port [端口號]:NG服務--port 8080

+0

哦,哇,我會給這個鏡頭! –

+0

因此角度在端口4200上運行; Flask API在端口5000上運行。在我的Angular組件內部,我向http://127.0.0發出一個http get請求。1:5000/api/test'並得到一個'No Access-Control-Allow-Origin header is present'。任何想法?] –

+1

在服務器上使用'flask-cors'修復問題 –