LiveGBS-GB28181流媒体服务如何实现跨域鉴权
LiveGBS 实现了 GB28181 协议,能够接入各个厂家的监控设备和监控平台,实现统一管理,和 web 端无插件播放,同时支持手机、微信播放。

LiveGBS 提供简单的登录鉴权,客户端通过用户名密码登录成功后,服务端返回认证token的cookie, 后续的接口访问, 服务端从cookie读取token进行校验. 但是, 在与客户系统集成时, 往往需要在客户系统完成鉴权过程. 这时就涉及到跨域的问题. 那么,这一套鉴权过程如何应用到跨域场景中呢?
服务端处理
服务端需要做以下处理:
登录成功, 服务端主动写 token 到 cookie
按照之前的接口设计, 登录成功, 服务端在 HTTP Response Body 中返回 token,由客户端自己负责将 token 写入 cookie. 在跨域场景中, 这样就行不通了,由于浏览器的限制, 客户端无法将 token 写到非子域名 cookie. 改为服务端主动写 token 到 cookie 就没有这个问题了. 服务端在 HTTP Response Header 中添加
Set-Cookie字段, 写入token=xxx服务端统一做充许跨域访问设置
服务端配置充许跨域并且携带cookie, 需要在 HTTP Response Header 中添加以下两项:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: $http_origin
Access-Control-Allow-Origin 不可以配置成
*, 而是当前HTTT前求客户端的 Origin注销登录时, 服务端主动将 token 从 cookie 清理
Set-Cookie: token=; expires=Thu, 01 Jan 1970 00:00:00 GMT;
客户端处理
客户端不必显示保存 token 到 cookie. 所有和 LiveGBS 的交互接口需要添加跨域配置, xhrFields: { withCredentials: true } 和 crossDomain: true
例如跨域登录接口调用示例如下:
$.ajax({
type: "GET",
url: "http://other-domain/api/v1/login",
xhrFields: {
withCredentials: true
},
crossDomain: true,
data: {
username: 'admin',
password: '21232f297a57a5a743894a0e4a801fc3'//admin
},
success: function(data) {
console.log(data);
}
});
LiveGBS-GB28181流媒体服务如何实现跨域鉴权的更多相关文章
- EasyNVR如何实现跨域鉴权
EasyNVR提供简单的登录鉴权,客户端通过用户名密码登录成功后,服务端返回认证token的cookie, 后续的接口访问, 服务端从cookie读取token进行校验. 但是, 在与客户系统集成时, ...
- 基于 HTTP 请求拦截,快速解决跨域和代理 Mock
近几年,随着 Web 开发逐渐成熟,前后端分离的架构设计越来越被众多开发者认可,使得前端和后端可以专注各自的职能,降低沟通成本,提高开发效率. 在前后端分离的开发模式下,前端和后端工程师得以并行工作. ...
- JavaScript跨域调用基于JSON的RESTful API
1. 基本术语 AJAX(Asynchronous JavaScript And XML,异步JavaScript和XML):AJAX是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交 ...
- 基于CAS的SSO单点登录-实现ajax跨域访问的自动登录(也相当于超时重连)
先补课,以下网址可以把CAS环境搭起来. [JA-SIG CAS服务环境搭建]http://linliangyi2007.iteye.com/blog/165307 [JA-SIG CAS业务架构介绍 ...
- c#关于JWT跨域身份验证解决方案
学习程序,不是记代码,而是学习一种思想,以及对代码的理解和思考. JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案.为了网络应用环境间传递声明而执行的一种基于JSON的开发标准 ...
- SpringBoot2.x整合Shiro出现cors跨域问题(踩坑记录)
1. Springboot如何跨域? 最简单的方法是: 定义一个配置CorsConfig类即可(是不是简单且无耦合到令人发指) @Configuration public class CorsConf ...
- 前后端分离java、jwt项目进行CORS跨域、解决非简单请求跨域问题、兼容性问题
情况描述: 最近在部署一个前后端分离的项目出现了跨域问题*, 项目使用jwt进行鉴权,需要前端请求发起携带TOKEN的请求*,请求所带的token无法成功发送给后端, 使用跨域后出现了兼容性问题:Ch ...
- 限流10万QPS、跨域、过滤器、令牌桶算法-网关Gateway内容都在这儿
一.微服务网关Spring Cloud Gateway 1.1 导引 文中内容包含:微服务网关限流10万QPS.跨域.过滤器.令牌桶算法. 在构建微服务系统中,必不可少的技术就是网关了,从早期的Zuu ...
- Spring Boot 中使用 Spring Security, OAuth2 跨域问题 (自己挖的坑)
使用 Spring Boot 开发 API 使用 Spring Security + OAuth2 + JWT 鉴权,已经在 Controller 配置允许跨域: @RestController @C ...
- 对象存储 COS 帮您轻松搞定跨域访问需求
背景 早期为了避免 CSRF(跨站请求伪造) 攻击,浏览器引入了 "同源策略" 机制.如果两个 URL 的协议,主机名(域名/IP),端口号一致,则视为这两个 URL " ...
随机推荐
- 数据开发提效有秘诀!离线开发BatchWorks 六大典型场景拆解
回顾大数据的发展历程,一句话概括就是海量数据的高效处理.在当今快节奏.不断变化的市场环境下,优秀的开发效率已经成为企业数字化转型的必备条件. 数栈离线开发BatchWorks 是一款专注离线数据ELT ...
- DRF之Response源码分析
DRF之Response源码分析 [一]响应类的对象Response源码 [1]路由 from django.contrib import admin from django.urls import ...
- linux0.01代码阅读
代码地址: https://cdn.kernel.org/pub/linux/kernel/Historic/linux-0.01.tar.gz 代码目录: main函数: 代码中的命名解释: CMO ...
- 在 SQL Server 中 你可以使用以下查询来找到引用 的 FOREIGN KEY 约束
SELECT f.name AS ForeignKeyName, OBJECT_NAME(f.parent_object_id) AS ReferencingTable, COL_NAME(fc.pa ...
- vue中的div 拖拽
封装指令 const vDraggable = { mounted(el) { let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; el.onmousedown = ...
- ABC397
最热泪盈眶的一次,中间被 D 卡了半小时,最后极限过 EF 翻盘. 不过 D 好像就是暴力,只是因为我没开 __int128?( rk.562. A - Thermometer 按照题意模拟即可. 点 ...
- [ThingsBoard] 3. 源码解读Actor
一.前言 本文基于 ThingsBoard 4.0.2 编写,对应提交Version set to 4.0.2(01c5ba7d37006e1f8a3492afbb3c67d017ca8dd3). 由 ...
- SciTech-Mathmatics - Advanced Linear Algebra(高等线性代数): 总结: Space的 变换 与 运算 + 正交向量 与 正交矩阵 + 同空间任两个Vectors可通过Matrix变换互相转化 + 方阵(满秩)不改变向量维数
SciTech-Mathmatics - Advanced Linear Algebra(高等线性代数): 总结: Space的 变换 与 运算 + 同空间任两个Vectors可通过Matrix变换互 ...
- win11正式版系统如何去除盾牌图标?
有雨林木风官网的小伙伴,在win11纯净版系统发现桌面图标有一个小盾牌,看着很不舒服,那么如何去除盾牌图标呢?其实很简单的,以下就是ylmf小编小编整理的解决方法,有需要的朋友一起来学习吧! 以下是在 ...
- 2023年3月最新全国省市区县和乡镇街道行政区划矢量边界坐标经纬度地图数据 shp geojson json
发现个可以免费下载全国 geojson 数据的网站,推荐一下.支持全国.省级.市级.区/县级.街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3.Echarts等 geojso ...