Django 解决ajax跨域问题

简介: 解决ajax跨域问题

1.安装django-cors-headers


pipinstalldjango-cors-headers


2.配置settings.py文件


INSTALLED_APPS= [
    ...
'corsheaders'    ...
 ] 
# 添加中间件MIDDLEWARE= [
'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.messages.middleware.MessageMiddleware', # 默认'django.middleware.clickjacking.XFrameOptionsMiddleware',# 默认'django.middleware.common.CommonMiddleware',# 默认]
# 跨域增加忽略CORS_ALLOW_CREDENTIALS=TrueCORS_ORIGIN_ALLOW_ALL=TrueCORS_ORIGIN_WHITELIST= (
'*')
CORS_ALLOW_METHODS= (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)
CORS_ALLOW_HEADERS= (
'XMLHttpRequest',
'X_FILENAME',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
#部署到云服务上必备ALLOWED_HOSTS= ['*']


其他解决方案


1.使用JSONP


使用Ajax获取json数据时,存在跨域的限制。不过,在Web页面上调用js的script脚本文件时却不受跨域的影响,JSONP就是利用这个来实现跨域的传输。因此,我们需要将Ajax调用中的dataType从JSON改为JSONP(相应的API也需要支持JSONP)格式。

JSONP只能用于GET请求。


2.直接修改Django中的views.py文件


修改views.py中对应API的实现函数,允许其他域通过Ajax请求数据:

def myview(_request):

response = HttpResponse(json.dumps({“key”: “value”, “key2”: “value”}))

response[“Access-Control-Allow-Origin”] = “*”

response[“Access-Control-Allow-Methods”] = “POST, GET, OPTIONS”

response[“Access-Control-Max-Age”] = “1000”

response[“Access-Control-Allow-Headers”] = “*”

return response

相关文章
|
7月前
|
前端开发 JavaScript Java
SpringBoot Ajax跨域问题(session共享问题)
ajax 发送post请求至springBoot出现跨域问题 需要在springBoot加上注解 @CrossOrigin 就能解决
39 0
|
3月前
|
前端开发 JavaScript Python
Django 模板中使用 Ajax POST
Django 模板中使用 Ajax POST
17 0
|
4月前
|
JSON 前端开发 JavaScript
Django实践-04静态资源和Ajax请求
Django实践-04静态资源和Ajax请求
Django实践-04静态资源和Ajax请求
|
4月前
|
JSON 前端开发 JavaScript
前端知识笔记(三十七)———Django与Ajax
前端知识笔记(三十七)———Django与Ajax
27 0
|
4月前
|
JSON 前端开发 JavaScript
前端知识笔记(二)———Django与Ajax
前端知识笔记(二)———Django与Ajax
28 0
|
5月前
|
SQL 前端开发 JavaScript
29 Django高级- Ajax
29 Django高级- Ajax
30 0
|
8月前
|
JavaScript 前端开发 安全
vue中解决ajax跨域问题(no “access-control-allow-origin”)
产生原因 跨域是是因为浏览器的同源策略限制,是浏览器的一种安全机制,服务端之间是不存在跨域的。 所谓同源指的是两个页面具有相同的协议、主机和端口,三者有任一不相同即会产生跨域。
122 0
|
8月前
|
XML 前端开发 JavaScript
django -- AJAX
django -- AJAX
|
JavaScript
Ajax-19:如何解决跨域问题
Ajax-19:如何解决跨域问题
105 0
Ajax-19:如何解决跨域问题
|
5月前
|
XML 前端开发 JavaScript
什么是Ajax和jquery
什么是Ajax和jquery
39 0