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实现网页链接提取的方法分享
Feb 25 Python
Python实现向QQ群成员自动发邮件的方法
Nov 19 Python
Python常用小技巧总结
Jun 01 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
基于python的字节编译详解
Sep 20 Python
VSCode下好用的Python插件及配置
Apr 06 Python
django query模块
Apr 20 Python
python适合人工智能的理由和优势
Jun 28 Python
Django搭建项目实战与避坑细节详解
Dec 06 Python
使用pytorch实现线性回归
Apr 11 Python
教你如何使用Python Tkinter库制作记事本
Jun 10 Python
yolov5返回坐标的方法实例
Mar 17 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合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
php汉字转拼音的示例
2014/02/27 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
nodeJS微信分享
2017/12/20 NodeJs
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
Python的requests网络编程包使用教程
2016/07/11 Python
微信跳一跳游戏python脚本
2020/04/01 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Python有参函数使用代码实例
2020/01/06 Python
Python定义一个函数的方法
2020/06/15 Python
python 字符串格式化的示例
2020/09/21 Python
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
先进事迹报告会感言
2014/01/24 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
殡葬服务心得体会
2014/09/11 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书