4

角度のあるフロントエンドを備えたフラスコサーバーを使用しています。最近まで、ローカルでプロジェクトを実行していましたが、問題はありませんでした。

プロジェクトをリモート サーバーに移動したところ、次のエラーが発生しました。何が間違っているのかわかりません:

私のエラー:

XMLHttpRequest はhttp://ec2-..../api/loginStatus/を読み込めません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン ' http://localhost:8100 ' へのアクセスは許可されません。応答の HTTP ステータス コードは 503 でした。

フラスコサーバー側コードのスニペット (応答にヘッダーを追加している場所を以下に示します):

@app.after_request
def after_request(response):
    response.headers.add('Access-Control-Allow-Origin','http://localhost:8100')
    response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
    response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
    response.headers.add('Access-Control-Allow-Credentials', 'true')
    return response

フロントエンドの angularjs で、restangular メソッドと $http メソッドの両方を使用しています。

メイン モジュールの .config に次の行を追加しました。

.config(['RestangularProvider', '$stateProvider', '$urlRouterProvider','$httpProvider',
  function(RestangularProvider, $stateProvider, $urlRouterProvider,$httpProvider) {

        //$httpProvider.defaults.useXDomain = true;
        $httpProvider.defaults.headers.common['Access-Control-Allow-Origin'] = "http://localhost:8100";
        $httpProvider.defaults.withCredentials = true;
        $httpProvider.defaults.headers.common = 'Content-Type: application/json';
        delete $httpProvider.defaults.headers.common['X-Requested-With'];

誰かがここで私を助けることができますか? 私は多くの資料を参照しましたが、何が間違っているのかわかりません。

PS: サーバーで 200 のステータス メッセージを受信して​​います。したがって、エラーはサーバー側ではなくフロントエンドにあると想定しています。私が間違っている場合は修正してください

よろしく、スニル

編集

こんにちは、私は問題を解決しました。@Mathijs Segers と @Hassan Mehmood の意見に感謝します。

nginx の構成に問題があり、サーバーが使用できなくなったことが判明しました。

まず、flask バックエンド用に作成されたシンボリック リンクに問題がありました (/home/username の git リポジトリを介してサーバー側を実行し、/var/www/sitename.com にシンボリック リンクを作成しています)。

また、1 秒間に送信できるリクエストの数を調整していた (ユーザーは 2 秒ごとに 1 つしか送信できなかった) ため、503 エラーが発生しました。

修正した後、私が立てた元のコードは正常に機能しました。

4

2 に答える 2