网页嵌入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 ...
随机推荐
- 【java】学习路径20-Date、Calender日期与时间
简单的说,Date和Calender基本上是差不多的. 在最开始的时候只有Date,没有Calender. 在jdk不断更新的时候,发现了Date有一点缺陷,于是推出了Calender. // Dat ...
- 第七十八篇:写一个按需展示的文本框和按钮(使用ref)
好家伙, 我们又又又来了一个客户 用户说: 我想我的页面上有一个搜索框, 当我不需要他的时候,它就是一个按钮 当我想要搜索的时候,我就点一下它, 然后按钮消失,搜索框出现, 当我在浏览其他东西时,这个 ...
- Dapr 集成 Open Policy Agent
大型项目中基本都包含有复杂的访问控制策略,特别是在一些多租户场景中,例如Kubernetes中就支持RBAC,ABAC等多种授权类型.Dapr 的 中间件 Open Policy Agent 将Reg ...
- 容器监控:cAdvisor
CAdvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具.通过在主机上运行CAdvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示. 在本地运行 ...
- MongoDB 副本集故障情况描述
副本集有两种类型三种角色 两种类型: 主节点( Primary)类型:数据操作的主要连接点,可读写. 次要(辅助.从)节点( Secondaries)类型:数据冗余备份节点,可以读或选举. 三种角色: ...
- flask+gunicorn+nginx部署
安装nginx和gunicorn yum install nginx pip3 install gunicorn flask项目配置 #main.py from flask import Flask ...
- MySQL实战,SQL语句
student数据库 student学生表,course课程表表,sc成绩表 -- 1.找出成绩为95分的学生的姓名 SELECT Sname FROM student WHERE Sno IN( S ...
- 220702 T1 玩具 (图的同构,全排列判定)
[题目描述] Tom和Jerry各有一个玩具,每个玩具都是由M根绳子连接到N个球上制成的. 在Tom的玩具中,球的编号为1,-,N,第i条绳子将球Ai和Bi连接起来. 类似地,在Jerry的玩具中,球 ...
- 洛谷P1962 斐波那契数列 (矩阵快速幂)
学了矩阵,练一下手... 1 #include<bits/stdc++.h> 2 typedef long long ll; 3 const ll mod=1e9+7; 4 using n ...
- 微信电脑版DAT文件转图片工具
一键批量将微信聊天接受到的加密存储DAT图片文件转化为普通图片. 通过查看转化后的图片,您可以: (1)清理无用的历史图片,节省电脑硬盘存储空间. (2)恢复寻找重要照片资料. 下载地址:点此下载 微 ...