programing

IE에서 "SCRIPT5: Access is denied" 오류 방지

cafebook 2023. 3. 19. 18:29
반응형

IE에서 "SCRIPT5: Access is denied" 오류 방지

시나리오:A.com 의 페이지 B 를 포함한 IFrame 이 있는 A.com 의 페이지 A.페이지 B는 jQuery 1.10.1을 사용하므로 페이지 A와 통신할 필요가 없습니다.

IE9 및 IE10에서는 이 사실에 관계없이 jQuery가 "SCRIPT5: Access is denied." 오류를 생성하고 jQuery의 실행을 전혀 거부합니다.크로스 도메인 통신, AJAX 요청 등은 필요 없지만 페이지 B에서 오류 없이 jQuery를 로드하고 실행해야 합니다.

IE9 및 IE10에서 이 오류가 발생하지 않도록(및 코드 실행을 금지하는) 방법이 있습니까? (참고: 다른 브라우저에서도 마찬가지로 "액세스 거부" 오류가 발생하지만 코드 실행을 방해하지 않습니다.)


갱신:

jsFiddle : http://jsfiddle.net/86q5k/4/

호스트 페이지의 내용은 (jsFiddle에서) 다음과 같습니다.

<iframe src="http://endorkins.com/test-iframe.html"></iframe>

iFramed 페이지의 내용은 다음과 같습니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>

    <script type="text/javascript">
        $(document).ready(function() {
            console.log('Hello!  Congratulations.  Your browser is neat, and doesn\'t sniff glue! (http://bit.ly/12QTvTT)');
        });
    </script>
</head>
    <body>
    </body>
</html>

결과: Chrome(콘솔에 메시지 표시): 여기에 이미지 설명 입력

그 결과 IE 9.0.8112가 됩니다(콘솔에서 메시지가 누락되었음을 주의해 주십시오).

여기에 이미지 설명 입력

해결 방법을 찾았습니다.이는 jQuery 1.10.1의 오류("기능")로 보입니다.jQuery 1.10.0을 사용하면 다음 오류가 발생하지 않습니다.

http://jsfiddle.net/86q5k/5/

<iframe src="http://endorkins.com/test-iframe-1.10.0.html"></iframe>

이상하다.정말 이상하다.1.10.1에서 이 문제가 발생하는 이유와 해결 방법을 아는 사람이 있다면, 저(및 전 세계 jQuery minions)는 당연히 매우 관심을 가질 것입니다. :)


업데이트: 이것은 jQuery 1.10.1 버그인 것 같습니다.http://bugs.jquery.com/ticket/13980


업데이트: @emanuele-greco에 따르면 이는 1.10.2 이상에서 수정되었습니다.따라서 jQuery 버전을 업그레이드하면 문제가 해결될 수 있습니다.

같은 문제를 찾아서 가장 이상하고 끔찍한 해결책으로 고쳤어요.

이미지를 사용하여 파일 업로드 대화 상자를 표시하고 변경 이벤트에 대한 자동 폼 제출을 수행하려고 합니다.저는 IE에서 사용자가 게시물을 작성하기 위해 이미지를 클릭해야 한다는 것을 스스로 포기했습니다.폼에 이미지를 배치했습니다(사이트의 여러 곳에 있는 것처럼).이로 인해 액세스 거부 오류가 생성되었습니다.충격으로 다시 클릭했더니 Yep이 에러를 받았습니다.세 번째 클릭으로 작동했다.그래서 같은 결과를 내고 다시 시도했는데, 처음 두 번의 클릭 오류가 발생했고 세 번째가 작동했습니다.그리고 집에서 만든 비누처럼 못생겼지만 지금은 작동하는 간단한 자바스크립트 코드는

var files= document.getElementById("newfiles");
files.onchange = addFiles;

function addFiles() {
    try {
        $("#fileupload").submit();
    } catch (e) {
        try {
            $("#fileupload").submit();
        } catch (e) {
            try {
                $("#fileupload").submit();
            } catch (e) {
                alert(e);
            }
        }
    }
};

또한 jQuery 자산을 Google Hosted Libraries와 같은 CDN에서 로드하지 마십시오.도메인이 다르기 때문에 Microsoft가 Internet Explorer에서 사이트 간 스크립팅으로부터 보호하기 위해 사용하는 특정 보안 프로토콜을 위반합니다.

언급URL : https://stackoverflow.com/questions/17370482/preventing-script5-access-is-denied-error-in-ie

반응형