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使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
使用Python对SQLite数据库操作
Apr 06 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
Python如何抓取天猫商品详细信息及交易记录
Feb 23 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
关于sys.stdout和print的区别详解
Dec 05 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
Apr 22 Python
django模板获取list中指定索引的值方式
May 14 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
python使用隐式循环快速求和的实现示例
Sep 11 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 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
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
javascript 关闭IE6、IE7
2009/06/01 Javascript
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
JavaScript async/await原理及实例解析
2020/12/02 Javascript
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
python实现图片文件批量重命名
2020/03/23 Python
python使用turtle绘制分形树
2018/06/22 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
jupyter 添加不同内核的操作
2021/02/06 Python
华为C++笔试题
2014/08/05 面试题
一套比较完整的软件测试人员面试题
2012/05/13 面试题
小型女装店的创业计划书
2014/01/09 职场文书
八一慰问活动方案
2014/02/07 职场文书
太太口服液广告词
2014/03/20 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
本科生就业推荐信
2014/05/19 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
JS实现数组去重的11种方法总结
2022/04/04 Javascript
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android
处理canvas绘制图片模糊问题
2022/05/11 Javascript
Python实现聚类K-means算法详解
2022/07/15 Python