最近收到反馈,某些程序的前端通过iframe标签内嵌finebi帆软报表时,出现一系列问题。
问题1: 如下图所示,单点登录(单点登录地址schema是https)后service地址的schema协议是http, 浏览器内核的安全策略不允许http访问https。
解决方案:如下图所示,在前端代码中加入下面代码,目的是将浏览器发出的http请求改造为https
问题2:内嵌帆软报表单点登录后出现重定向死循环,如下图所示。
具体原因如下图所述,主要是跨站时chrome浏览器(80版本之后)默认不允许携带cookie(即第三方cookie)造成的。在Chrome 80中,Chrome会将没有声明SameSite值的cookie默认设置为SameSite=Lax。
解决方案:nginx增加以下配置。
proxy_cookie_path / "/; SameSite=None;Secure;";
需要注意的是,对于帆软报表,proxy_cookie_path不能增加 httponly, 否则会报下图所示错误。
但是不加httponly,其实是有被xss攻击 的风险。解决方案如下图:
参考:
google浏览器高版本 跨域第三方cookie(qlik)无法携带问题解决_高版本浏览器不允许跨服务器cookie-CSDN博客
跨域与跨站_跨站和跨域-CSDN博客