django解决跨域请求的问题


Posted in Python onNovember 11, 2018

解决方案

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 文件管理实例详解
Nov 10 Python
Python 多线程其他属性以及继承Thread类详解
Aug 28 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
Nov 29 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
python 递归相关知识总结
Mar 03 Python
PO模式在selenium自动化测试框架的优势
Mar 20 Python
Python加密与解密模块hashlib与hmac
Jun 05 Python
python 生成图形验证码的方法示例
Nov 11 #Python
老生常谈python中的重载
Nov 11 #Python
Django跨域请求CSRF的方法示例
Nov 11 #Python
Python rstrip()方法实例详解
Nov 11 #Python
python requests爬取高德地图数据的实例
Nov 10 #Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 #Python
Python中的取模运算方法
Nov 10 #Python
You might like
PHP在Web开发领域的优势
2006/10/09 PHP
PHP4实际应用经验篇(2)
2006/10/09 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
js实现轮播图特效
2020/05/28 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
python如何实现数据的线性拟合
2019/07/19 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
北京奥运会主题口号
2014/06/13 职场文书
2014年预算员工作总结
2014/12/05 职场文书
收入证明范本
2015/06/12 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
python 实现图片特效处理
2022/04/03 Python