浅谈django rest jwt vue 跨域问题


Posted in Python onOctober 26, 2018

django rest framework 使用 router 注册url时,访问接口 包302错误 可能是因为请求url 写法有问题,

如请求 /api/login/ 报302 ,需要去掉后面的反斜杠,正确写法 /api/login 请求跨域:

跨域:

简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。这显然是不安全的。为此,浏览器的鼻祖:网景(Netscape)公司提出了优秀的解决方案:著名的浏览器同源策略。现在所有支持JavaScript的浏览器都会使用这个策略。

同源:

域名、协议、端口均相同的网站即为同源。

流程:

当一个浏览器的两个Tab页分别打开百度和谷歌页面时,百度发起一个脚本执行,此时浏览器会检查该脚本属于哪个页面。即检查是否同源。只有和百度同源的脚本才会被执行。若非同源,在请求数据时,浏览器会在控制台报一个异常。提示拒绝访问。

解决方法:

安装django-cors-headers

pip install django-cors-headers

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",

)

解决

通过以上配置,即可完美解决django跨域请求处理。

需要注意的就是cors - headers的中间件CorsMiddleware在注册时必须放在django - common中间件的前一个。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用ctypes提高Python的执行速度
Sep 09 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
python模块smtplib实现纯文本邮件发送功能
May 22 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python3安装crypto出错及解决方法
Jul 30 Python
对Django url的几种使用方式详解
Aug 06 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
Python控制台实现交互式环境执行
Jun 09 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 Python
python blinker 信号库
May 04 Python
Python os.rename() 重命名目录和文件的示例
Oct 25 #Python
python实现旋转和水平翻转的方法
Oct 25 #Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 #Python
python 实现对文件夹中的图像连续重命名方法
Oct 25 #Python
python微信公众号之关注公众号自动回复
Oct 25 #Python
python 文件查找及内容匹配方法
Oct 25 #Python
利用python循环创建多个文件的方法
Oct 25 #Python
You might like
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
[01:06:39]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第三局
2016/03/02 DOTA
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
Python实现手势识别
2020/10/21 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
linux比较文件内容的命令是什么
2013/03/04 面试题
教师节活动主持词
2014/04/02 职场文书
办公用房租赁协议书
2014/11/29 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
HTML常用标签超详细整理
2022/03/19 HTML / CSS