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文件读写并使用mysql批量插入示例分享(python操作mysql)
Feb 17 Python
Python实现快速多线程ping的方法
Jul 15 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
python去掉行尾的换行符方法
Jan 04 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
python模块之sys模块和序列化模块(实例讲解)
Sep 13 Python
python使用代理ip访问网站的实例
May 07 Python
Python class的继承方法代码实例
Feb 14 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
python实现简单石头剪刀布游戏
Oct 24 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
FCKeditor添加自定义按钮
2008/03/27 PHP
js实现分割上传大文件
2016/03/09 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
python中reload(module)的用法示例详解
2017/09/15 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
python实现图书管理系统
2018/03/12 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
关于Keras Dense层整理
2020/05/21 Python
python中pivot()函数基础知识点
2021/01/03 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
班组安全员工作职责
2014/02/01 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
2014年工人工作总结
2014/11/25 职场文书
投诉信回复范文
2015/07/03 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript