2017-08-14 14 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'修复问题 –