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用GET方法上传文件
Mar 10 Python
python中as用法实例分析
Apr 30 Python
Python实现处理管道的方法
Jun 04 Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
python中os模块详解
Oct 14 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
使用requests库制作Python爬虫
Mar 25 Python
Python退火算法在高次方程的应用
Jul 26 Python
python numpy数组中的复制知识解析
Feb 03 Python
pycharm 设置项目的根目录教程
Feb 12 Python
python 使用递归的方式实现语义图片分割功能
Jul 16 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 缓存实现代码及详细注释
2010/05/16 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
jQuery知识点整理
2015/01/30 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
angular-cli修改端口号【angular2】
2017/04/19 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
用Python给文本创立向量空间模型的教程
2015/04/23 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
详解Python核心对象类型字符串
2018/02/11 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
django框架auth模块用法实例详解
2019/12/10 Python
python在地图上画比例的实例详解
2020/11/13 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
大学生期末自我鉴定
2014/02/01 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
工作求职信
2014/07/04 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫