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获取网页状态码示例
Mar 30 Python
在Python中用has_key()方法查找键是否存在的教程
May 21 Python
简单介绍Python的Django框架加载模版的方式
Jul 20 Python
如何在Django中设置定时任务的方法示例
Jan 18 Python
Python中文编码知识点
Feb 18 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 Python
python 网络编程要点总结
Jun 18 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 获取远程文件大小的3种解决方法
2013/07/11 PHP
php多任务程序实例解析
2014/07/19 PHP
thinkPHP显示不出验证码的原因与解决方法分析
2017/05/20 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
python继承和抽象类的实现方法
2015/01/14 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
python中模块的__all__属性详解
2017/10/26 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
Numpy数组的广播机制的实现
2020/11/03 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
python中str内置函数用法总结
2020/12/27 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
商务英语专业应届毕业生求职信
2013/10/28 职场文书
先进个人获奖感言
2014/01/24 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
python 命令行传参方法总结
2021/05/25 Python