Program Club

Facebook에서 Chrome에서 "Unsafe JavaScript attempt to access frame with URL"오류를 표시합니다.

proclub 2020. 12. 5. 10:49
반응형

Facebook에서 Chrome에서 "Unsafe JavaScript attempt to access frame with URL"오류를 표시합니다.


내 샘플 Facebook 앱은 어제 Chrome에서 잘 작동했습니다. 이 페이지는 JavaScript SDK를 통해 Silverlight 광고 Facebook을 통합합니다. 기본 로그인 상태를 확인하고, 페이스 북에 로그인하고, 이름을 얻고, 로그 아웃 할 수 있습니다.

오늘은 내 변경 사항이 없지만 Chrome에서 Google 검색 결과에서 매우 흔한 JavaScript 오류로 손상되었지만 실제 답변은 없습니다. IE와 Firefox에서 여전히 잘 작동합니다.

공개 URL은 다음과 같습니다.

http://www.andrewdothay.net/prj/facebook/

Chrome에서 JavaScript 콘솔을 열면 다음과 같은 오류가 많이 발생합니다.


URL로 프레임에 액세스하려는 안전하지 않은 JavaScript 시도

http://www.facebook.com/login.php?api_key=151352704876752&cancel_url=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%23cb%3Df1175dd3f%26origin%3Dhttp%253A%252F% 252Fwww.andrewdothay.net % 252Ff304d89d8 % 26relation % 3Dopener % 26transport % 3Dpostmessage % 26frame % 3Df3760623c % 26result % 3DxxRESULTTOKENxx & channel_url = http % 3A % 2F % 2Fwww.andrewdothay.net % 2Fprj % 2Ffacebook % 2F & display = popup & fbconnect = 1 & locale = en_US & method login & next = http % 3A % 2F % 2Fstatic.ak.fbcdn.net % 2Fconnect % 2Fxd_proxy.php % 23cb % 3Df3c546942 % 26origin % 3Dhttp % 253A % 252F % 252Fwww.andrewdothay.net % 252Ff304d89d8 % 26relation % 3Dpostmessage % 26transport % 3Dpostmessage % 26transport % 3Dpostmessage 26frame % 3Df3760623c % 26result % 3DxxRESULTTOKENxx & return_session = 1 & sdk = joey & session_version = 3 & v = 1.0 URL이 http://www.andrewdothay.net/prj/facebook/ 인 프레임에서 .

도메인, 프로토콜 및 포트가 일치해야합니다.


여기에 Chrome에서 무슨 일이 일어나고 있는지에 대한 아이디어가 있습니까?


최신 정보

오늘의 컴퓨터에서 FB.login ()을 호출 할 때 Chrome이 로그인 팝업을 차단하고 있음을 발견했지만 어제 JavaScript 콘솔에서 190 개의 오류 메시지를받지 못했다는 것을 알고 있습니다.

따라서 Chrome에서 팝업을 허용하면 최종 사용자에게는 작동하지만 모든 새로운 오류 메시지는 개발자로서의 진단 경험을 죽입니다.


해결책을 찾았습니다. 사용자 작업없이 FB.login을 실행하면 웹킷이 팝업을 차단합니다.

예를 들어 프로젝트에 초대 시스템을 사용했습니다. 초대 코드를 입력하기위한 입력 / 텍스트가 있습니다. ajax / post 요청으로 초대 코드를 사용할 수 있는지 확인했습니다. 가능하다면 FB.login ()을 실행합니다. 짐작했듯이 브라우저가 팝업을 차단하고 js 콘솔에 수많은 오류가 나타났습니다.

따라서 사용자 작업 후에 FB.login ()을 실행해야합니다. ajax / post와 FB.login () 사이에 페이스 북 로그인 버튼을 넣겠습니다. 사용자는 그것을 클릭해야 할 것입니다 – 그건 짜증나지만 – 그들은 문제를 보지 못할 것입니다.

Btw, 문제는 며칠 후에 다시 발생합니다. 브라우저의 신뢰 시스템이라고 생각합니다. 개발할 때 많은 시간을 방문하고 브라우저는 처음에는 신뢰할 수 있다고 생각합니다. 이 부분에 대해 잘 모르겠지만 내 솔루션이 작동합니다.


제 경우에는 페이스 북 JS가 단일 페이지에 여러 번로드 되었기 때문입니다. 하나는 로그인 용이고 두 번째는 "좋아요"버튼입니다. "like"모듈에서 참조를 제거하면 하루가 절약됩니다.


Mücahit Yılmaz가 맞습니다. 아래에 붙여 넣은 예제를 사용하고 setTimeout () 메서드를 사용하면 실패하고 그렇지 않으면 작동합니다. 제대로 로그인 할 때까지 경고 메시지가 계속 반복되지만 지불하는 데 약간의 비용이 듭니다. 나는 사용자가 그것을 보지 못할 것이라고 확신합니다.

$(document).ready(function() {
$("#facebook_link").click(function() {
    //setTimeout(fb);
    fb();
    return false;
});

function fb() {
    FB.getLoginStatus(function(response) {
        if (response.session) {
            // logged in and connected user, someone you know
            gotResponse(response);
        } else {
            // no user session available, someone you dont know
            FB.login(function(response) {
                if (response.session) {
                    // user successfully logged in
                    gotResponse(response);
                } else {
                    // user cancelled login, do nothing
                }
            });
        }
    });
}

function gotResponse(response) {
    console.dir(response);
}

});

재현하기 쉽습니다. 다른 탭에서 페이스 북에 로그인 한 다음이 코드를 시도하면 경고가 표시되지 않습니다. 로그 아웃 한 다음 코드를 시도하면 경고가 표시됩니다. .login 블록에 도달했기 때문입니다.


제 경우에는 <div id="fb-root"></div>태그 와 관련된 문제였습니다 . 문서에서 권장하는대로 여는 <body>태그 바로 뒤에 넣지 않았습니다 .

올바른 위치에 배치 한 후 "Unsafe JavaScript ..."오류가 중지되었습니다.


내 FB.init 호출에서 'xfbml : true'옵션을 제거하면이 문제가 해결되었습니다.

I was having the problem in the default internet browser on Android Jelly Bean


I had this problem with a chrome browser and it was due to my chrome settings. I had the browser set to disallow 3rd parties sites from setting cookie data. Allowing Pop-ups was not an issue for me. When the facebook iFrame is created it must set a cookie that it then uses to track if the user needs to login. If that cookie isn't allowed to be set then the site fails. One thing that would be useful in the facebook api would be a setting that shows when something is failing. I do not see that as an event that one can subscribe to and assign a callback.

Here is a link to the FB javascript sdk on subscriptions. Any response on finding a callback for failed requests would be appreciated.
https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/


And in my case the problem was related to type of protocol: from:

<div class="fb-like-box" data-href="https://www.facebook.com/xxxxxx"

to:

<div class="fb-like-box" data-href="http://www.facebook.com/xxxxxx"

as my web store didnt use https I removed 's' from data-href attribute of the likebox.


Mücahit Yılmaz's solution worked for me, as well. I didn't need to access the user's information, so I removed the login script from the sample app. Also removed the Welcome message and any information requiring info stored in the $basic variable.

참고URL : https://stackoverflow.com/questions/3577947/facebook-gives-unsafe-javascript-attempt-to-access-frame-with-url-error-in-chr

반응형