Django解决跨域请求问题
几种方法 使用django-cors-headers全局控制**(推荐)** 使用JsonP,只能用于Get方法 在views.py里设置响应头,只能控制单个接口 django-cors-headers 首先安装 pip install django-cors-headers 然后在settings.py里配置一番就可以 INSTALLED_APPS = [ ... 'corshe
目录4 个章节
几种方法
- 使用
django-cors-headers全局控制**(推荐)** - 使用
JsonP,只能用于Get方法 - 在
views.py里设置响应头,只能控制单个接口
django-cors-headers
首先安装
pip install django-cors-headers
然后在settings.py里配置一番就可以
INSTALLED_APPS = [
...
'corsheaders',
...
]
MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware', # 注意顺序
...
)
#跨域增加忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_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',
'Pragma',
)
大功告成了。
JsonP
使用Ajax获取json数据时,存在跨域的限制。不过,在Web页面上调用js的script脚本文件时却不受跨域的影响,JSONP就是利用这个来实现跨域的传输。因此,我们需要将Ajax调用中的dataType从JSON改为JSONP(相应的API也需要支持JSONP)格式。 JSONP只能用于GET请求。 本文不介绍该方法,需要的同学请自行搜索
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
_EOF_
Django解决跨域请求问题
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
Django应用中的静态文件处理
在日常开发中,我们都是把Django的Debug模式打开,方便调试,在这个模式下,由Django内置的Web服务器提供静态文件服务,不过需要进行一些配置,才能正确访问。 配置settings # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.0/howto/static-files/ ST
2021-12-18 · 0_Django基础知识 · 约 1 分钟
Django使用django-filer上传图片
前言 (好像不知道写啥) 注意 django-filer目前只支持到django 1.11 setting.py INSTALLED_APPS = [ # image support 'easy_thumbnails', 'filer', 'mptt', ] # Image Upload Support THUMBNAIL_HIGH_RESOLUTION = Tr
2022-05-27 · 0_Django基础知识 · 约 1 分钟
Django清空所有数据和重建表结构
清空所有数据 python manage.py flush 重建表结构 删除数据库中所有表 删除应用文件夹下的migrations目录内所有文件,除了__init__.py 执行以下命令 python manage.py makemigrations python manage.py migrate
2021-12-18 · 0_Django基础知识 · 约 1 分钟
MacbookPro-M3-14寸版本开箱
亮度不足?买了Pro,包装如出一辙,封面换了,Pro更厚,啧。对比MateBook14,大小相似,随手拍几张,看奥运,无聊。屏幕亮配置高,但15寸Air更薄舒适,何必?
2025-10-28 · 笔记本电脑 · 约 1 分钟
讨论
共 0 条加载评论中…