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中pip安装非PyPI官网第三方库的方法
Jun 02 Python
Python实现的最近最少使用算法
Jul 10 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
详解Django rest_framework实现RESTful API
May 24 Python
Numpy中的mask的使用
Jul 21 Python
python实现自动登录
Sep 17 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
Python3中列表list合并的四种方法
Apr 19 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
Python基于字典实现switch case函数调用
Jul 22 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
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
简明 Python 基础学习教程
2007/02/08 Python
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Python zip()函数用法实例分析
2018/03/17 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
椰子猫砂:CatSpot
2018/08/27 全球购物
维德科技C#面试题笔试题
2015/12/09 面试题
公务员职业生涯规划书范文  
2014/01/19 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
《燕子专列》教学反思
2014/02/21 职场文书
安全宣传标语口号
2014/06/06 职场文书
售房委托书
2014/08/30 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
Java spring定时任务详解
2021/10/05 Java/Android