django解决跨域请求的问题详解


Posted in Python onJanuary 20, 2019

解决方案

1.安装django-cors-headers

pip install django-cors-headers

2.配置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',
)

OK!问题解决!

其他解决方案

另外还从网上看到其他两种解决方案,但都不太合适。在此列出,供大家参考

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
Python进阶之尾递归的用法实例
Jan 31 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
Python使用pyautocad+openpyxl处理cad文件示例
Jul 11 Python
flask 框架操作MySQL数据库简单示例
Feb 02 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
Mar 06 Python
解决IDEA 的 plugins 搜不到任何的插件问题
May 04 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
Python学习之time模块的基本使用
Jan 17 Python
python 切换root 执行命令的方法
Jan 19 #Python
在Python 不同级目录之间模块的调用方法
Jan 19 #Python
python导入模块交叉引用的方法
Jan 19 #Python
python添加模块搜索路径和包的导入方法
Jan 19 #Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 #Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 #Python
在pycharm 中添加运行参数的操作方法
Jan 19 #Python
You might like
杏林同学录(一)
2006/10/09 PHP
php getsiteurl()函数
2009/09/05 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
一些mootools的学习资源
2010/02/07 Javascript
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
vue组件jsx语法的具体使用
2018/05/21 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
深入浅析python 中的匿名函数
2018/05/21 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
MCAKE蛋糕官方网站:一直都是巴黎的味道
2018/02/06 全球购物
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
会计系毕业个人自荐信格式
2013/09/23 职场文书
大学军训感言800字
2014/02/27 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
民主评议党员个人总结
2015/02/13 职场文书
教师党员个人自我评价
2015/03/04 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
python如何读取和存储dict()与.json格式文件
2022/06/25 Python