CrossDomain сердцебиение не может проанализировать данные JSONP с помощью JQuery - PullRequest
1 голос
/ 14 октября 2011

Я встраиваю свой модуль, проект asp.net, в «портал», портал генерирует iframe для моего URL, я знаю, что это дерьмо, но я этого не сделал.
Чтобы избежать сессии в главном «портале»"конец, пока пользователь итерирует по моему веб-проекту, владелец портала сказал мне, чтобы я запускал биение с помощью 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
     );
}

1 Ответ

0 голосов
/ 15 октября 2011

То, что вы пытаетесь сделать, является явным нарушением той же политики происхождения для JavaScript.Хорошим решением является то, что владелец портала может установить этот элемент заголовка http для страницы (и только страницы), которую вы хотите получить с помощью XHR.

Access-Control-Allow-Origin: <a href="http://foo.example" rel="nofollow">http://foo.example</a>

источник: http контроль доступа

...