モジュール、asp.net プロジェクトを「ポータル」に埋め込むと、ポータルは私の URL に iframe を生成します。
ユーザーが Web プロジェクトを反復しているときにメインの「ポータル」エンドでのセッションを回避するために、ポータルの所有者は、アプリケーションからポータルへの JavaScript によるハートビートを開始するように私に言いました。
この方法でセッションを維持することは安全ではありませんが、「ポータル」があることは誰もが知っています。
本当の問題は、アプリケーションからポータルへのクロスドメイン リクエストを実行できないことです。これは、同じオリジン ポリシーによってロックされているためです。jquery を使用して解決策を見つけましたが、[ハートビート リスナー] で 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
);
}