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引用(import)文件夹下的py文件的方法
Aug 26 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 Python
python多线程socket编程之多客户端接入
Sep 12 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
python实现简单登陆流程的方法
Apr 22 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
Python模块_PyLibTiff读取tif文件的实例
Jan 13 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
python+playwright微软自动化工具的使用
Feb 02 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 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
新闻分类录入、显示系统
2006/10/09 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
PHP防盗链代码实例
2014/08/27 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
CI框架附属类用法分析
2018/12/26 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
javascript常见操作汇总
2014/09/03 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
Python数组遍历的简单实现方法小结
2016/04/27 Python
pandas数据处理进阶详解
2019/10/11 Python
pytorch之添加BN的实现
2020/01/06 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
Pycharm Git 设置方法
2020/09/15 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
个人租房协议书
2014/04/09 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
React中的Context应用场景分析
2021/06/11 Javascript
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers