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 03 Python
Windows系统下安装Python的SSH模块教程
Feb 05 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
flask-socketio实现WebSocket的方法
Jul 31 Python
关于Pycharm无法debug问题的总结
Jan 19 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
django实现类似触发器的功能
Nov 15 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
python如何代码集体右移
Jul 20 Python
Python用来做Web开发的优势有哪些
Aug 05 Python
python实现股票历史数据可视化分析案例
Jun 10 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中的字符串函数
2006/11/24 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
javascript+mapbar实现地图定位
2010/04/09 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python的subprocess模块总结
2014/11/07 Python
python中的set实现不重复的排序原理
2018/01/24 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
python 字典中取值的两种方法小结
2018/08/02 Python
python实现键盘输入的实操方法
2019/07/16 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
科室工作个人总结的自我评价
2013/10/29 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
雨中的树观后感
2015/06/03 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server