2013-02-13 4 views
1

Вот моя ситуация: у меня есть Javascript-плагин, который при нажатии запускает всплывающее окно на сторонних сайтах, которые его размещают. Затем этот popop отображает IFRAME, в котором я использую Facebook в качестве метода входа.Небезопасная попытка JavaScript получить доступ к кадру ... Протоколы должны соответствовать

Когда всплывающее запущен, он недавно начал давать ошибку:

Unsafe JavaScript attempt to access frame with URL http://{THIRD-PARTY-SITE-GOES-HERE} from frame with URL https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18#channel= …%3Dtabmodule%26utm_term%3D200000%26fb_xd_fragment%23xd_sig%3Df2ade8e518%26.

The frame requesting access has a protocol of 'https', the frame being accessed has a protocol of 'http'. Protocols must match.

Сам IFRAME находится на HTTPS и используется для правильной работы. Я не уверен, почему Chrome пытается получить доступ к родительской странице. У меня нет контроля над родительскими страницами, поэтому я не могу сделать их https.

Вот мой FB код инициализации внутри IFRAME:

window.fbAsyncInit = function() 
    { 
     FB.init({ 
      appId: '{myappid}', 
      status: true, 
      cookie: true, 
      xfbml: true, 
      oauth: true, 
      channelURL : 'https://degree3.com/channel.php' 
     }); 

     FB.getLoginStatus(function(response) 
     { 
      if (resp = response.authResponse) 
      { 
       $('#fb_button').attr("onclick", "signinViaFacebook(response.authResponse.userID, response.authResponse.accessToken);").show(); 
      } 
     }); 
    }; 
    (function() 
    { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
     document.getElementById('fb-root').appendChild(e); 
    }()); 

Любые идеи, как я могу исправить ошибку?

+0

_ «IFRAME сам по себе на https» _ - сообщение об ошибке, похоже, предполагает иное. – CBroe

+0

@CBroe Извините, если я не был более ясен: сообщение об ошибке по какой-то причине относится к родительской странице (сторонний-сайт-идет-здесь), а не к самой IFRAME. Iframe контролируется мной и находится на https. – Wemmick

+0

Об ошибках: [Небезопасная попытка JavaScript для доступа к кадру с URL-адресом] (http://stackoverflow.com/q/4324108/1456376): Не похоже на меня. Все их страницы находятся в одном домене, а Facebook не участвует. [Неверная ошибка JavaScript в доступе к фрейму с URL-адресом ... »постоянно генерируется в инспекторе веб-браузера Chrome] (http://stackoverflow.com/questions/3010170/unsafe-javascript-attempt-to-access-frame-with-url-error -being-непрерывно): Также не совсем то же самое: моя ошибка не является непрерывной, и это предотвращает нормальную работу SDK Facebook JS. – Wemmick

ответ

0

Вы не можете использовать логин facebook внутри iframe, он никогда не будет работать. Даже не утруждай себя попыткой, я потратил несколько разочаровывающих часов, пытаясь сделать то же самое. Даже если вы решите проблему https, которую у вас есть прямо сейчас, вы столкнулись с ошибкой X-Frame Options из-за опции, заданной в заголовке ответа facebook, которая принимает только запросы с одного источника (то есть facebook).

Что я в основном пытаюсь сказать, так это то, что facebook не может быть запущен в iframe по соображениям безопасности. Ваш лучший выбор в вашем текущем затруднительном положении - открыть еще одно всплывающее окно с входом в facebook. Iframe просто не сработает. Я знаю, что это не будет выглядеть элегантно, но это единственный путь, или вы перенаправляете свое всплывающее окно на facebook и имеете механизм обратного вызова для перенаправления на ваш плагин.

Надеюсь, это поможет.

+0

Да, я не делаю фактического входа в iframe - он задыхается, когда я загружаю iframe с помощью функции init iS Facebook, как показано выше, прежде чем я даже доберусь до этапа входа в систему. Как вы описали, я вхожу во вход в всплывающее окно. – Wemmick

+0

Многие веб-сайты заходят на Facebook из iframe, www.mygamification.com. Возможно, вы не считали, что эти iframe являются автономными доменами (вставляемыми плагинами javascript), не связанными с оригинальной веб-страницей, поэтому логин действителен только внутри самого iframe. Я также работаю над такой же функциональностью, я вижу эту ошибку, но это не мешает мне войти в fb. – Minja

Смежные вопросы

 Смежные вопросы