django解决跨域请求的问题


Posted in Python onNovember 11, 2018

解决方案

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版
Dec 07 Python
使用python解析xml成对应的html示例分享
Apr 02 Python
python多线程threading.Lock锁用法实例
Nov 01 Python
Python的SQLAlchemy框架使用入门
Apr 29 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
Python实现JSON反序列化类对象的示例
Jan 31 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
Python csv文件的读写操作实例详解
Nov 19 Python
pytorch之ImageFolder使用详解
Jan 06 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
keras实现VGG16 CIFAR10数据集方式
Jul 07 Python
python单元测试框架pytest的使用示例
Oct 07 Python
python 生成图形验证码的方法示例
Nov 11 #Python
老生常谈python中的重载
Nov 11 #Python
Django跨域请求CSRF的方法示例
Nov 11 #Python
Python rstrip()方法实例详解
Nov 11 #Python
python requests爬取高德地图数据的实例
Nov 10 #Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 #Python
Python中的取模运算方法
Nov 10 #Python
You might like
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
django静态文件加载的方法
2018/05/20 Python
python语音识别实践之百度语音API
2018/08/30 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
python模拟实现斗地主发牌
2020/01/07 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
大四学生思想汇报
2014/01/13 职场文书
电焊工岗位职责
2014/03/06 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
详解JS ES6编码规范
2021/05/07 Javascript
php7中停止php-fpm服务的方法详解
2021/05/09 PHP