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中进行自动化单元测试的教程
Apr 15 Python
python实现textrank关键词提取
Jun 22 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
Python实现最常见加密方式详解
Jul 13 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
详解python如何引用包package
Jun 07 Python
Python celery原理及运行流程解析
Jun 13 Python
Python 没有main函数的原因
Jul 10 Python
Python实现文字pdf转换图片pdf效果
Apr 03 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正则提取或替换img标记属性
2013/06/26 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
joomla组件开发入门教程
2016/05/04 PHP
php正则修正符用法实例详解
2016/12/29 PHP
javascript数组的扩展实现代码集合
2008/06/01 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
12条写出高质量JS代码的方法
2018/01/07 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
使用python实现生成用户信息
2017/03/20 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
基于python历史天气采集的分析
2019/02/14 Python
Django ModelForm操作及验证方式
2020/03/30 Python
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
英国复古服装购物网站:Collectif
2019/10/30 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
专科毕业生学习生活的自我评价
2013/10/26 职场文书
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
幼儿评语大全
2014/04/30 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
三好学生评语大全
2014/12/29 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
vue实现在data里引入相对路径
2022/06/05 Vue.js