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爬取Coursera课程资源的详细过程
Nov 04 Python
python开启多个子进程并行运行的方法
Apr 18 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
python 编写简单网页服务器的实例
Jun 01 Python
Numpy array数据的增、删、改、查实例
Jun 04 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
Python 实现子类获取父类的类成员方法
Jan 11 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 Python
python 返回一个列表中第二大的数方法
Jul 09 Python
Python生成器generator原理及用法解析
Jul 20 Python
Python中Yield的基本用法
Oct 18 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
PHP新手上路(七)
2006/10/09 PHP
PHP 文件扩展名 获取函数
2009/06/03 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
php源码的使用方法讲解
2019/09/26 PHP
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
简单的js计算器实现
2016/10/26 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
vue2配置scss的方法步骤
2019/06/06 Javascript
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
python Pandas库基础分析之时间序列的处理详解
2019/07/13 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
党员思想汇报范文
2013/12/30 职场文书
2014年高三毕业生自我评价
2014/01/11 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
商务经理岗位职责
2014/08/03 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
场地使用证明模板
2014/10/25 职场文书
兵马俑的导游词
2015/02/02 职场文书
六年级作文之自救
2019/12/19 职场文书