Google Chrome浏览器不能携带cookie导致RTSP协议视频平台EasyNVR调取接口报错,如何解决?

作为基于H5网页无插件直播的互联网直播平台,TSINGSEE青犀视频的权限产品都是基于H5播放,所以对浏览器的兼容性要求比较高。最近,谷歌最新版本更新之后,我们突然发现post请求就无法携带cookie了,到度娘上一搜索,发现很多用户都因为该问题导致了程序报错,花费了不少时间在排查上面。同样我们也因为该问题,导致用户调用EasyNVR的接口报错。

77.png

78.png

观察这两个请求,发现是在请求头里面一个有cookie,一个没有cookie;有cookie的请求成功了,没有cookie的请求失败了。

因为程序没有改动关于cookie的代码,就是因为google高版本对cookie进行了限制。

79.png

SameSite属性

Cookie的SameSite属性用来限制第三方Cookie,从而减少安全风险。
它可以设置三个值。

  • Strict
    Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie。

  • Lax
    Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。

  • None
    Chrome 计划将Lax变为默认设置。这时,网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。

Set-Cookie: widget_session=abc123; SameSite=None; Secure

这里添加Secure为true

store.Options(sessions.Options{HttpOnly: true, MaxAge: tokenTimeout, Path: "/", Secure: true})

在newCookie的时候为添加Samsite为none

cookie := &http.Cookie{
   Name:     name,
   Value:    value,
   Path:     options.Path,
   Domain:   options.Domain,
   MaxAge:   options.MaxAge,
   Secure:   options.Secure,
   HttpOnly: options.HttpOnly,
   SameSite: http.SameSiteNoneMode,
}

81.png

这个是Http的,不会携带cookie。

82.png

Https是可以携带cookie的。

因为新版谷歌浏览器导致的Cookie问题,其实我们也不是第一次遇到了,之前也解决过Cookie导致的跨域问题(EasyNVR新版存在跨域问题是什么原因)。然而目前Cookie的问题也算是有了解决,大家如果后续还碰到了无法自行排查及解决的问题,可以及时联系我们。

除了EasyNVR之外,还有更多视频监控解决方案(EasyDSS、EasyGBS、EasyCVR),详情可进入TSINGSEE青犀视频查阅及了解。EasyDarwin是国内视频流媒体团队TSINGSEE青犀视频开发和维护的开源社区。从2012年12月创建并发展至今,从原有的单服务的流媒体服务器形式,扩展成现在的云平台架构的开源项目。

猜你喜欢

转载自blog.csdn.net/EasyNVR/article/details/108754629