我将我的模块(一个 asp.net 项目)嵌入到“门户”中,该门户会为我的 url 生成一个 iframe,我知道它很糟糕,但我没有做到。
为了避免在用户使用我的 Web 项目进行迭代时在主“门户”端进行会话,门户所有者告诉我通过 javascript 从我的应用程序到门户启动心跳。
每个人都知道以这种方式保持会话是不安全的,但是“门户”在那里我无事可做。
真正的问题是我不能从我的应用程序到门户的跨域请求,因为同源策略锁定它,我找到了一个使用 jquery 的解决方案,但它需要 [heartbeat listener] 处理 json。
官方 jsonp 网站在这里。
有人可以帮助我吗?
有我的脚本:
function startHeartbeat()
{
var interval = 9513575;
window.setInterval(
function () {
$.ajax({
type: "GET",
cache: false,
async: true,
crossDomain: true,
url: "http://www.theportalurl.com",
dataType: 'JSONP',
complete:function(jqXHR, textStatus){
alert("Complete");
},
success:function(json){
alert("Success");
},
error:function(jqXHR, textStatus, errorThrown){
alert("Error:" + textStatus + ", detail:" + errorThrown);
},
});
}
, interval
);
}
在@rook 给我帮助之后,我达到了这个目标:
function startHeartbeat(pgn)
{
$("body").append("<img id='heartbeat' style='width:1px; height:1px' name='heartbeat' src='http://www."+Math.random()+".org'/>");
var interval = 350000;
window.setInterval(
function () {
var rnd = Math.random();
var url = "https://www.theportal.com/refreshsession.aspx?pgn="+pgn+"&rndv="+rnd;
$("#heartbeat").attr("src", url);
}
, interval
);
}