我正在尝试在返回json的Django应用和运行AJAX的客户端之间进行跨站点通信。
我正在使用具有以下配置的django-cors-headers:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp.apps.MyAppConfig',
'corsheaders',
]
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ORIGIN_ALLOW_ALL = True
现在,我正试图允许所有连接只是为了进行测试。这是我的看法:
def index(request):
if request.is_ajax:
results={}
results=["The password is valid"]
data_json=json.dumps(results)
mimetype="application/json"
return HttpResponse(data_json,mimetype)
我也尝试了装饰器@csrf_exempt。最后,这是我的AJAX:
$.ajax({
url: "http://otherdomain.com/myapp/",
type: "POST",
crossDomain: true,
data :{
'username': $("#myName").val(),
},
dataType: "json",
success:function(result){
alert(JSON.stringify(result));
},
error:function(xhr,status,error){
alert(status);
}
});
控制台警告此:
XMLHttpRequest无法加载http://otherdomain.com/myapp/。所请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问源“ thisdomain.com”。
任何帮助将是有用的。非常感谢你。
从您的评论中,我可以认为您忘记了在Web服务器/主机上启用cors支持。使用Dreamhost时,可以在此处参考其文档。
就像@YPCrumble在他的回答中说的那样,当您有工作请求时,您可能想使用最新的Django-cors-middleware分支。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句