簡體   English   中英

Django jquery ajax cors錯誤

[英]Django jquery ajax cors error

當我嘗試使用ajax發布數據時,我在控制台中收到此錯誤。 應該在此URL確認此數據,然后我應該從中獲取包含更多數據的響應。

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。

編輯:我為ajax添加了csrfSafeMethod。 我不知道這是否與它有關? 此代碼由djangoproject在此處提供docs.djangoproject.com/en/1.11/ref/csrf

EDIT2:我最終在內部發送了一個ajax調用,因此我使用urllib與django進行了跨域工作。 對跨域發布數據很有幫助。

根據文檔:

CorsMiddleware應該放置在盡可能高的位置,尤其是在可以生成響應的任何中間件之前,例如Django的CommonMiddleware或Whitenoise的WhiteNoiseMiddleware。 如果不是以前,它將無法將CORS標頭添加到這些響應中。

我建議您將其作為所有當前中間件中的第一個中間件(最高)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM