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 ElementTree 基本读操作示例
Apr 09 Python
python正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
python关键字and和or用法实例
May 28 Python
Python实现高效求解素数代码实例
Jun 30 Python
python语言使用技巧分享
May 31 Python
Python中的Descriptor描述符学习教程
Jun 02 Python
Python聊天室程序(基础版)
Apr 01 Python
Python获取网段内ping通IP的方法
Jan 31 Python
PyTorch的深度学习入门教程之构建神经网络
Jun 27 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
python定义具名元组实例操作
Feb 28 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
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
Firefox中autocomplete="off" 设置不起作用Bug的解决方法
2011/03/25 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
javascript中如何处理引号编码"
2013/08/15 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
Angularjs 基础入门
2014/12/26 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
Python定时执行之Timer用法示例
2015/05/27 Python
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
python中执行shell的两种方法总结
2017/01/10 Python
python操作redis方法总结
2018/06/06 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
Java程序员面试90题
2013/10/19 面试题
自我评价200字分享
2013/12/17 职场文书
多媒体专业自我鉴定
2014/02/28 职场文书
后勤主管岗位职责
2014/03/01 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
党日活动总结
2014/05/07 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
英语邀请函范文
2015/02/02 职场文书
家长意见书
2015/06/04 职场文书
校长新学期寄语2016
2015/12/04 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python