Django jquery ajax cors错误
Posted
技术标签:
【中文标题】Django jquery ajax cors错误【英文标题】:Django jquery ajax cors error 【发布时间】:2017-12-23 21:49:47 【问题描述】:当我尝试使用 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 作为中间件来添加标题。我遵循了所有的配置说明。
我的设置.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 进行了跨域处理。 This 在跨域发布数据方面帮助了我很多。
【问题讨论】:
CorsMiddleware
的添加顺序正确吗?
this 可能会帮助你。
@hanzTheFranz 不,这不是问题,
你的网址是https://secure.paygate.co.za/payweb3/process.trans
?
@Ykh 是的,这就是端点
【参考方案1】:
根据文档:
CorsMiddleware 应该放在尽可能高的位置,尤其是在 任何可以生成响应的中间件,例如 Django 的 CommonMiddleware 或 Whitenoise 的 WhiteNoiseMiddleware。如果不是 之前,它将无法将 CORS 标头添加到这些 回复。
我建议你把它作为目前所有中间件中第一个(最高)的中间件。
参考:https://github.com/ottoyiu/django-cors-headers
【讨论】:
试过了,同样的错误,但是我使用了不同的方法。在 EDIT2 下的问题末尾查看更多信息。以上是关于Django jquery ajax cors错误的主要内容,如果未能解决你的问题,请参考以下文章
CORS 问题 - POST 时的 Access-Control-Allow-Origin 错误(Jquery Ajax)