有数报告被嵌入网页后,为什么显示异常?

1.chrome浏览器samesite跨域策略限制

说明

从Chrome 51开始,浏览器的Cookie新增加了一个Samesite属性,用来防止CSRF攻击和用户追踪。如果iframe的地址和父级的地址不同源(域名不一致),则可能无法传递cookie

解决方案一:调整每个客户端的chrome策略

  • 打开chrome后,输入chrome://flags/#same-site-by-default-cookies,
  • 将【SameSite by default cookies】的default选项改为disable后,清除浏览器缓存,再打开您的网页。

解决方案二:域名同源
确保有数iframe和父级地址的域名一致,增加一层代理域名,使访问有数的域名和外部门户的域名一致

2.nginx代理配置x-frame-options头跨域限制

说明

X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 frame、iframe、embed 或者 object 中展现的标记。站点可以通过配置X-Frame-Options响应头确保网站没有被嵌入到别人的站点里面,从而避免点击劫持攻击

解决方案一:增加例外

在nginx里增加一个例外配置,比如允许在youdata.com中引用frame,就在有数服务器nginx的location里加一条配置:

add_header X-Frame-Options ALLOW-FROM http://youdata.com/;

解决方案二:域名同源

确保有数iframe和父级地址的域名一致,增加一层代理域名,使访问有数的域名和外部门户的域名一致