Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django jquery ajax cors错误_Jquery_Python_Ajax_Django_Django Cors Headers - Fatal编程技术网

Django jquery ajax cors错误

Django jquery ajax cors错误,jquery,python,ajax,django,django-cors-headers,Jquery,Python,Ajax,Django,Django Cors Headers,当我尝试使用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-Contr

当我尝试使用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头作为中间件来添加头。我遵循了所有的配置说明

My 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
我在Windows10上

编辑:我为ajax添加了csrfSafeMethod。我不知道这是否与此有关?。此代码由djangoproject在这里docs.djangoproject.com/en/1.11/ref/csrf提供


EDIT2:我最终在内部发送了一个ajax调用,因此我使用urllib与django进行了跨域操作。帮助我跨域发布数据。

根据文档:

Corsmidlware应尽可能放置在高处,尤其是在 任何可以生成响应的中间件,如Django的 CommonMiddleware或Whitenoise的WhiteNoiseMiddleware。如果不是 在此之前,它将无法将CORS标头添加到这些 答复

我建议您将其作为当前所有中间件中的第一个中间件(最高)


参考资料:

Corsmidlware
是否按正确顺序添加?可能会对你有所帮助。@hanzTheFranz-nah这不是问题,你的url是
https://secure.paygate.co.za/payweb3/process.trans
?@Ykh是的,就是这个问题,同样的错误,但是我使用了不同的方法。请参见问题末尾的EDIT2下的更多信息。