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中的高级函数map/reduce使用实例
Apr 13 Python
Python Socket传输文件示例
Jan 16 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
Django自定义用户认证示例详解
Mar 14 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
python实现opencv+scoket网络实时图传
Mar 20 Python
Python检测端口IP字符串是否合法
Jun 05 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
python Protobuf定义消息类型知识点讲解
Mar 02 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引用效率问题分析
2012/03/23 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
常用PHP封装分页工具类
2017/01/14 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
JS随机数产生代码分享
2018/02/24 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
Python中字符串对齐方法介绍
2015/05/21 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
个人综合鉴定材料
2014/05/23 职场文书
中文专业自荐书
2014/06/29 职场文书
观看信仰心得体会
2014/09/04 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
求职简历自我评价范文
2015/03/10 职场文书
《火烧云》教学反思
2016/02/23 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
golang实现浏览器导出excel文件功能
2022/03/25 Golang