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脚本来删除指定容量以上的文件的教程
May 04 Python
python实现杨辉三角思路
Jul 14 Python
Python之自动获取公网IP的实例讲解
Oct 01 Python
Python多线程扫描端口代码示例
Feb 09 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
Python类中方法getitem和getattr详解
Aug 30 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
Spring http服务远程调用实现过程解析
Jun 11 Python
python如何写try语句
Jul 14 Python
Python 批量下载阴阳师网站壁纸
May 19 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
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php简单生成随机数的方法
2015/07/30 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
js 获取input点选按钮的值的方法
2014/04/14 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
python时间日期操作方法实例小结
2020/02/06 Python
python 从list中随机取值的方法
2020/11/16 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
2013年入党人员的自我鉴定
2013/10/25 职场文书
生产部统计员岗位职责
2014/01/05 职场文书
女娲补天教学反思
2014/02/05 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
实习感想范文
2015/08/10 职场文书
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis