2017-07-18 20 views
0

ajaxでデータを投稿しようとすると、コンソールでこのエラーが発生します。このデータはこのURLで確認されているはずです。それから、より多くのデータを含むレスポンスを取得する必要があります。Django jquery ajax corsエラー

Cross-Origin Request Blocked: The Same Origin Policy disallows 
reading the remote resource at https://secure.paygate.co.za/payweb3/process.trans. 
(Reason: CORS header 'Access-Control-Allow-Origin' missing). 

私はヘッダを追加するためにミドルウェアとしてdjango-cors-headersを使用しています。私はすべての設定指示に従った。

私のsettings.py:

INSTALLED_APPS = [ 
    # ... 
    'corsheaders', 
    # ... 
] 

MIDDLEWARE = [ 
    # ... 
    'corsheaders.middleware.CorsMiddleware', 
    # ... 
] 

CORS_ORIGIN_ALLOW_ALL = True 
CORS_ALLOW_METHODS = (
    'GET', 
    'POST', 
    'OPTIONS', 
) 

AJAX呼び出し:

$.ajax({ 
     type: "POST", 
     url: url, 
     dataType: "json", 
     data: data, 
     success: function(data){ 
      alert('success'); 
     }, 
     error: function(data){ 
      alert('error'); 
     } 
    }); 

データとurlは、この上に宣言され、その部分は結構です。 提出するたびにエラー警告が表示されます。

マイパッケージ:

Django==1.11.3 
django-cors-headers==2.1.0 
pytz==2017.2 

私は、Windows 10

EDIT日午前:私は、AjaxのためcsrfSafeMethodを追加しました。これと関係があるかどうかは分かりません。このコードは

EDIT2 docs.djangoproject.com/en/1.11/ref/csrfここdjangoprojectによって提供されています。私はurllibはを使用してジャンゴとのクロスドメインのものをした内部それではAJAX呼び出しを送ることになりました。 Thisは、クロスドメインのデータを投稿するのに多くの手助けをしました。ドキュメントを1として

+0

'CorsMiddleware'が正しい順序で追加されましたか? – Grimmy

+0

[this](https://stackoverflow.com/questions/6506897/csrf-token-missing-or-incorrect-while-post-parameter-via-ajax-in-django)が役立つでしょう。 – hansTheFranz

+0

@hanzTheFranzナーthats問題ではない、 – bernosbernus

答えて

0

CorsMiddlewareは特に 前に、そのようなDjangoの はCommonMiddlewareやホワイトノイズのWhiteNoiseMiddlewareとして応答を生成することができる任意のミドルウェアを可能な限り高く配置する必要があります。以前に でない場合は、 レスポンスにCORSヘッダーを追加することはできません。

現在のミドルウェアの中で、最初のミドルウェア(最高)としてお勧めします。

参考:https://github.com/ottoyiu/django-cors-headers

+0

しかし、私は同じエラーを試してみました別のアプローチ。 EDIT2の質問の最後にある詳細情報を参照してください。 – bernosbernus