2017-07-11 4 views
1

私はfalcon_corsを使用してPythonで安心してサービスを作成しています。 UIが別のドメインからhttp要求を送信した場合、ブラウザは最初にOPTIONS要求を送信します。しかし、私はブラウザで以下のエラーを表示します:falcon_corsで `OPTIONS`リクエストを有効にするには?

XMLHttpRequestはhttp://localhost:8000/user/をロードできません。 プリフライトリクエストでアクセスコントロールのチェックが合格しません: レスポンスの 'Access-Control-Allow-Credentials'ヘッダーの値が '' ' 'は、リクエストのクレデンシャルモードが 'インクルード' 。 発信元 'http://localhost:4200'はアクセスできません。 XMLHttpRequestによって開始された 要求の認証モードは、withCredentials属性によって制御される です。

私は、この要求を処理するためにバックエンドからOPTIONSを許可する必要があることを検索しました。だから私は、以下のように私のコードを記述します。

f_cors = falcon_cors.CORS(allow_origins_list=[ 
    'http://localhost:4200', 
    'http://127.0.0.1:4200', 
    ], 
    allow_all_headers=True, allow_all_methods=True) 

app_pre_beaker = falcon.API(middleware=[ 
    f_cors.middleware 
]) 

私はfalcon_corsを作成する上でallow_all_methods=Trueを指定しているが、私はまだ同じエラーを取得します。これ以外に何が更新されるべきですか?

答えて

0

質問のエラーメッセージで示された問題は、OPTIONSリクエストに関連していません。

代わりに、サーバーがAccess-Control-Allow-Credentialsレスポンスヘッダーを空の値で送信したことが原因と考えられます。この問題を解決するには、Access-Control-Allow-Credentials: trueを送信するようにサーバーを構成する必要があります。つまり、ヘッダー値は "true"でなければなりません。

サーバーがAccess-Control-Allow-Credentials: trueで応答しない場合、ブラウザはフロントエンドコードがレスポンスにアクセスできないようにします。フロントエンドJavaScriptコードはサーバーに送信する要求に資格情報を含めているためです。 CORSプロトコルでは、サーバがAccess-Control-Allow-Credentials: trueで応答する必要があります。

+0

はい、あなたは正しいです。 'allow_credentials_all_origins = True'を' falcon_cors.CORS'呼び出しに追加するとうまくいきます。 –

関連する問題