2017-08-14 13 views
0

私はクライアントサイドフレームワークとしてAngularを使用したサーバーサイドフレームワークとしてFlaskを使用しています。Angular with server-side frameworkを使用する

Flaskが使用するindex.htmlテンプレートファイルのdistフォルダにある、コンパイルされたAngular jsファイルを参照するのはかなりわかりやすいようです。

APIを同じFlaskサーバーでセットアップしました。

私の問題はこれです:

私はng buildを使用して、python flask-server.pyすべてが正常に動作を実行します。

私がng serveを実行すると、アプリケーションのフロントエンドロジックしか利用できず、サーバーと通信できなくなります。

APIを使用するためにng servepython flask-server.pyを実行したとしても、2台のサーバが自分のマシンで通信していることに起因するクロス起点の問題が発生します。

これは大きな問題ではありませんが、ng testでテストを行っているときに同じ問題が発生することが予想されます。テストは非常に重要です。

私はこれに正しい方法で近づいていますか?

私が考えることができる唯一の解決策は、API機能を備えた一部のリモートマシン上に完全に別のサーバーを置くことです。したがって、ng serveでAngularアプリをテストし、クロスオリジンの問題なしにAPIを呼び出します。

可能であれば、私はこれを避けたいと思います。

同じマシンでフロントエンドとバックエンドの両方の開発をしたいと思います。テストを含む。

+0

8080 --portサーブ?あなたはクロスオリジンのリクエストをしていません –

+0

私は 'ng serve'を実行すると、独自のサーバー上でAngularアプリケーションを実行します.Flaskとは完全に別です。同じことがテストのために使用する必要がある 'ng test 'にも当てはまります。私。それはポート4200で実行されます。Flaskサーバーを実行すると、ポート5000にあります。同じマシン上の2つの異なるサーバー...クロス起点問題 –

+0

クロス起点はブラウザーの問題です。この問題は、同じマシン上で実行されている2台のサーバーではどうなりますか? –

答えて

0

これらの2つのオプションが合理的です:

  1. あなたは、クロスオリジンの構成を有しているサーバからのすべてのバックアップされたコードを提供することができます言ったように。

  2. 異なるポート上でフロントエンド(角)とバックエンドにサービスを提供し、クロスオリジンの設定を行います。

NG --port [port_numberを]サーブ:NGは、サーバー上のクロスオリジンの問題を持っている可能性がどのように

+0

ああ、私はこのショットを与えるでしょう! –

+0

角度はポート4200で実行されています。 Flask APIはポート5000で実行されています。私のAngularコンポーネントの中で、http://127.0.0にhttp getリクエストを行います。1:5000/api/test'とし、「No Access-Control-Allow-Originヘッダが存在する」を得る。任意のアイデアですか?] –

+1

サーバー上のフラスココルスを使用した場合の問題を修正しました。 –