跨域heartbeat无法使用jquery解析jsonp数据

跨域heartbeat无法使用jquery解析jsonp数据,jquery,json,security,same-origin-policy,heartbeat,Jquery,Json,Security,Same Origin Policy,Heartbeat,我在一个“门户”中演示我的模块,一个asp.net项目,门户会为我的url生成一个iframe,我知道这很糟糕,但我没有成功。 为了避免主“门户”中的会话在用户迭代我的web项目时结束,门户所有者告诉我通过javascript启动从应用程序到门户的心跳。 每个人都知道以这种方式保持会话是不安全的,但“门户”是这样的,我无事可做。 真正的问题是,我无法从应用程序跨域请求门户,因为我使用jquery找到了一个解决方案,但它需要[heartbeat listener]处理json。 jsonp官方网站

我在一个“门户”中演示我的模块,一个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 give me help之后,我达到以下目标:

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
     );
}
功能开始拍(pgn)
{
$(“正文”)。追加(“”);
var区间=350000;
window.setInterval(
函数(){
var rnd=Math.random();
变量url=”https://www.theportal.com/refreshsession.aspx?pgn=“+pgn+”&rndv=“+rnd;
$(“心跳”).attr(“src”,url);
}
间隔
);
}

您试图做的显然违反了JavaScript的同源策略。一个好的解决方案是,门户所有者可以为要使用XHR获取的页面(并且页面)设置此http头元素

访问控制允许原点:


来源:

非常感谢您的回答,但我无法更改门户、无法更改代码、无法更改配置,也许我可以将我的应用程序放在同一个根目录下。@newway如果它在同一个域上,那么您不应该有问题,另一个解决方案是“跨域代理”。非常感谢。它不在同一个域中,但我会要求它给我的管理员,我不能自由地把手放在服务器上,也不想要它;)然后放入同一个域成为最后一个唯一的可能性。@newway另一件事,如果你不担心得到响应,你可以在页面上写一个不可见的标记,它将触发get请求。这通常用于XSRF/CSRF漏洞利用。再次感谢。我可以在门户主页中定位一些图像。无法更改门户。你是说: