2016-11-10 41 views
0

自分のWebサイトからリモートサーバーにPOST要求を送信しようとしていますが、CORSの問題が発生します。要求ヘッダーフィールドプリフライト応答でAccess-Control-Allow-Headersによってアクセス制御要求メソッドが許可されない

インターネットで検索しましたが、私の特定の問題の解決策が見つかりませんでした。 これは私のAjaxのリクエストパラメータである:このバックエンド側では

var params = { 
    url: url, 
    method: 'POST', 
    data: JSON.stringify(data), 
    contentType: 'json', 
    headers: { 
     'Access-Control-Request-Origin': '*', 
     'Access-Control-Request-Methods': 'POST' 
    } 

はPythonで私のコードです:

XMLHttpRequestをすることはできません。私は私のコンソール上のエラーが取得

@app.route(SETTINGS_NAMESPACE + '/<string:product_name>', methods=['POST', 'OPTIONS']) 
@graphs.time_method() 

def get_settings(product_name): 
    settings_data = helper.param_validate_and_extract(request, None, required=True, type=dict, post_data=True) 
    settings_data = json.dumps(settings_data) 
    response = self._get_settings(product_name, settings_data) 
    return output_json(response, requests.codes.ok, headers = { 
     'Access-Control-Allow-Origin': '*', 
     'Access-Control-Allow-Methods': 'POST' 
    }) 

負荷[http://path-to-my-server]。リクエストヘッダフィールド アクセス制御リクエスト・メソッドがプリフライト応答で アクセス制御 - 許可 - ヘッダ

によって許可されていない私は、私も'Access-Control-Request-Headers'を追加できるという通知をしましたが、それは、必要であれば、私はわかりませんでしたそれは私にそれを削除したので、より多くの問題を引き起こします。

誰もこの問題を解決する方法を知っていますか?

+2

あなたのAJAXリクエストを動作するはずですが、サーバのみがこれらのヘッダを送信し、 'アクセス-Control'ヘッダを送信するべきではありません。 – adeneo

+0

ありがとう、それは働いた。答えとして投稿して承認します –

答えて

1

あなたのajaxリクエストはAccess-Controlヘッダを送信すべきではありません。サーバはこれらのヘッダを送信して、Webブラウザを使用してその情報を読み取ることが許可されているオリジンのセットをサーバが記述できるようにします。

同じ起点ポリシーは通常、ブラウザ外では適用されないため、ブラウザがデータを取得できるようにするには、CORSヘッダーまたはJSONPデータを送信する必要があります。

ブラウザはこれらのヘッダーをサーバーに送信しません。必ずしもそうである必要はありません。特定の送信元がデータを使用できるかどうかを判断するサーバーです。

paramsオブジェクトからheaderオプションを削除し、それが

関連する問題