背景:php
最近在作一个运维平台,要从该平台直接能够联入zabbix平台的“事件详情”页面。ajax
考虑过的方法:json
1.单点登录:在多个应用系统中,只须要登陆一次,就能够访问其余相互信任的应用系统。(比较复杂工做量也比较大直接否认)。跨域
2.分析zabbix请求时携带的cookie数据,在后台经过zabbixAPI接口获取session_id写入zabbix系统域下的cookie中。cookie
因为跨域写cookie也是比较麻烦,也否认了。session
3.在本系统中模拟zabbix登录,创建zabbix会话。在之后的请求到zabbix页面时能够直接使用该会话进行请求。运维
要在本系统页面经过ajax登录zabbix系统,就要解决跨区post提交。post
请求路径:http://11.202.16.28/zabbix/index.php?name=admin&password=admin123&autologin=1&enter=Sign+in测试
在zabbix的index.php中增长jsonp
header("Access-Control-Allow-Origin: *");//容许全部地址跨域请求
在本系统首页执行
//同时进行zabbix登录,创建会话 function loginZabbix(){ $.ajax({ url:"${zabbixLoginUrl}", type:'post', // 下面的两行代码,就是解决跨域的关键 xhrFields: {withCredentials: true}, crossDomain: true, //就是上面的两行代码 dataType: 'jsonp', success:function(data){ } }); }
通过测试能够知足要求。