浅谈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 相关文章推荐
Python中__name__的使用实例
Apr 14 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
Python根据区号生成手机号码的方法
Jul 08 Python
在Django的视图中使用数据库查询的方法
Jul 16 Python
Python自动化运维和部署项目工具Fabric使用实例
Sep 18 Python
Python中类的初始化特殊方法
Dec 01 Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
Python 实现输入任意多个数,并计算其平均值的例子
Jul 16 Python
python构造函数init实例方法解析
Jan 19 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 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
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python读取csv文件示例(python操作csv)
2014/03/11 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
python中map的基本用法示例
2018/09/10 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
如何理解Python中的变量
2020/06/01 Python
python导入库的具体方法
2020/06/18 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
国际经济贸易专业推荐信
2013/11/06 职场文书
精彩自我鉴定
2014/01/16 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
网站客服岗位职责
2014/04/05 职场文书
高一新生军训方案
2014/05/12 职场文书
国际经济贸易专业自荐信
2014/06/13 职场文书
科学育儿宣传标语
2014/10/08 职场文书
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript