网页嵌入zabbix页面(不同域名)
先来结论:
方案一:绕过身份验证:https://www.cnblogs.com/JaSonS-toy/p/4939805.html(我不是这样实现,可以自行尝试)
方案二:
1、保证请求的ip与请求zabbix的ip一致
1.在nginx中增加一个路由跳转到zabbix
2.添加白名单(不然其他域名也能内嵌这个页面)
2-1.nginx添加headers_more模块(卸载后重新编译)
2-2.nginx修改响应头X-Frame-Options(因为chrome和firefox不支持 ALLOW-FROM,所以要做步骤三)
2-3.nginx添加响应头Content-Security-Policy(添加白名单)
2、嵌入页面后,可以选择让用户自行登录,或者后端调取zabbixAPI获取token,返回前端,前端document.cookie='zbx_sessionid={{token}}'
本质上,我把zabbix嵌到我的页面,然后请求我的服务器tp.abc.cn/zabbix,nginx转发到zabbix.abc.cn,zabbix.abc.cn返回给nginx,nginx修改响应头,再返回给客户端。过程中你不需要修改zabbix服务器的任何东西。
过程分析:
1、网上很多人说到Zabbix下的 include/defines.inc.php 文件,把define('X_FRAME_OPTIONS', 'SAMEORIGIN');改为define('X_FRAME_OPTIONS', null);
但实测是不行的,即使改了请求头依然是“X_FRAME_OPTIONS=SAMEORIGIN”。官网也明确表示不能跨域请求了:https://www.zabbix.com/forum/zabbix-help/361685-change-x_frame_options-do-not-work 
2、也有人说可以绕过身份验证,但因为zabbix是运维负责的,我懒得去做绕过身份校验(其实是不会php)
3、所以只能想办法,实现如官网所说的把zabbix的域名和框架中的域名一致(例如zabbix的域名是zabbix.abc.cn,框架的域名是tp.abc.cn)。我的实现方式是在nginx中增加一个路由跳转到zabbix,这样就可以通过访问tp.abc.cn/zabbix请求zabbix.abc.cn。
4、不能让别人也能通过访问tp.abc.cn/zabbix嵌入zabbix页面吧,所以能不能改成使用白名单呢?理论上响应头里的东西都是可以自定义设置的,但是nginx默认只能增加请求头。即哪怕你加了“X_FRAME_OPTIONS=ALLOW-FROM tp.abc.cn”,请求头中原带的“X_FRAME_OPTIONS=SAMEORIGIN”依然存在。如果想修改则要添加headers_more模块(自行百度添加,有人说可以动态添加,我只尝试了卸载后重新添加)。实践发现即使把X_FRAME_OPTIONS改成ALLOW-FROM,也没有起到白名单作用(因为chrome和firefox不支持 ALLOW-FROM),所以要使用响应头Content-Security-Policy设置白名单
注意:测试环境中,虽然嵌入的页面能访问到zabbix,但是登录成功也不会跳到监控页面。因为此时域名依然是不同的,zabbix返回的Set-Cookie没有设置SameSite=None,在跨域时chrome不会进行Set-Cookie操作

网页嵌入zabbix页面(不同域名)的更多相关文章
- WebIM(5)----将WebIM嵌入到页面中
在之前的文章中,已经开发了一个简单的WebIM,但是这个WebIM是在独立的页面中的,今天发布的WebIM是一个可以嵌入到自己网页中的版本,你只需添加少量的代码,就可以在页面中嵌入一个WebIM.不过 ...
- android网页打印,安卓网页打印,h5页面打印,浏览器打印,js打印工具
Android设备打印比较麻烦,一般设备厂商都提供原生app开发的SDK,我们web开发者为难了,不会原生开发啊 给大家提供一个思路,实现web加壳,利用打印浏览器实现 简单来说就是把我们的web页面 ...
- Flex嵌入HTML页面
这段时间一直在苦心研究Flex,今天突然想,我们平时都是把swf放到网页中,怎么才能把网页嵌入到Flex中呢?我查了一些资料,然后经过自己的不懈努力,终于搞定. 为了方便,写了个嵌入HTML页面的代理 ...
- SSI注入--嵌入HTML页面中的指令,类似jsp、asp对现有HTML页面增加动态生成内容,见后面例子
SSI注入漏洞总结 from:https://www.mi1k7ea.com/2019/09/28/SSI%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E%E6%80%BB%E ...
- Zabbix页面管理
Zabbix页面管理 Screen Screen翻译成中文为"屏幕",在一些交通管理中心.保安监控.预警中心等等地方都比较常见到监控视频,视频上有多块小视频,实际上Zabbix S ...
- https的页面内嵌入http页面报错的问题
1.https的页面内嵌入http页面报错 在HTTPS的页面上嵌入http的页面时,浏览器会直接报错.比如在HTTPS页面上用 iframe 直接嵌入一个 http 页面,比如我们可以在百度上直接嵌 ...
- from表单iframe原网页嵌入
今天是巩固的from表单跟嵌入其他页面,同样的,学习到了新的知识. 温故而知新: iframe--在原页面嵌入其他页面,以窗口的样式 其中scrolling--滚动条 noresize--可调整大小 ...
- Zabbix页面遇到历史记录的乱码需要修改数据库
Zabbix页面遇到历史记录的乱码需要修改数据库: 解决办法: 1.将 zabbix 数据库中的表备份: 2.手动删除 zabbix 数据库: 3.重新创建 zabbix 库时手动指定字符集为 utf ...
- 网页嵌入WMP代码(转)
网页嵌入WMP代码 播放器代码解释,装了9.0或9.0以上的播放器才能正常使用: OBJECT id="WMP" height="176" width=&quo ...
随机推荐
- 「学习笔记」斜率优化dp
目录 算法 例题 任务安排 题意 思路 代码 [SDOI2012]任务安排 题意 思路 代码 任务安排 再改 题意 思路 练习题 [HNOI2008]玩具装箱 思路 代码 [APIO2010]特别行动 ...
- Think PHP 完整的带富文本格式以及图片上传,并且在页面上分页展示
Think php6.0官网网址:序言 · ThinkPHP6.0完全开发手册 · 看云 (kancloud.cn) 下面是基础配置 第一步:创建TP框架,命名为tp composer create- ...
- OSI七层模型与TCP/IP协议
作者:菘蓝 时间:2022/9/1 ================================================================================== ...
- 二极管1N4148和1N4007的区别
二极管1N4148和1N4007的定义 1N4148 是开关二极管,耐压100V,电流150mA,反向恢复速度快,为nS级别. 1N4007 是普通整流二极管,耐压1000V,电流1A ,反向恢复时间 ...
- KingbaseES V8R6 ksql 关闭自动提交
背景 用过oracle或mysql的人都知道,做一个dml语句,如果发现做错了,还可以rollback,但在Kingbase ksql 中,如果执行一个dml,没有先运行begin; 的话,一执行完就 ...
- KingbaseES V8R6单实例外部备份故障案例
案例说明: 在KingbaseES V8R6单实例环境,配置外部备份服务器使用sys_backup.sh物理备份时,出现以下"WAL segment xxx was not archived ...
- 采云链SRM SaaS供应商管理系统,发展型中小企业的福音
采购业务的发展遵循一些规律:采购从一开始围绕"供应商"开展,逐渐发展成围绕"货物"进行,如今围绕"供应商协同"和"采购流程管理&q ...
- 装饰Hexo博客以及部署个人站点
我的博客最开始采用的是Hexo+hexo-theme-next搭建的,使用GitHub Pages托管并进行自动化部署,写文发布的流程非常简单方便,云端写作发布也轻而易举. 本来事情到这里就应该结束了 ...
- nginx实现vue的web页面项目集群负载
问题描述 项目是使用前后端分离,前端使用的是vue技术. 想实现的功能是:在前端项目部署的过程中(直接删除项目目录的文件,然后上传新的项目文件),在这个短时间内不能影响用户的使用.所以想到的就是使用n ...
- Kibana管理
这里是用来管理您的 kibana 运行时配置的地方,包括初始化配置和后续的索引模式配置.高级设置等.您可以调整 kibana 自身的行为,也可以编辑您通过 kibana 保存的查询.视图.仪表板等各种 ...