IE의 jQuery 스크립트에 대한 액세스가 거부되었습니다.
jQuery 1.4.2 스크립트를 사용한 iframe이 있습니다.양쪽 모두에 동일한 iframe이 주입됩니다.http
그리고.https
jQuery 스크립트는 메인 HTML 파일에 상대 경로로 포함되어 있습니다(예: /scripts/jquery-1.4.2.min.js).
AJAX 콜이 발신되면 Internet Explorer는 액세스를 거부합니다.AJAX가 다른 하위 도메인을 호출하고 있지만 올바른 프로토콜을 사용하고 있습니다.다른 브라우저는 모두 동작하지만 Internet Explorer는 다음 오류를 표시합니다.
SCRIPT5: 액세스가 거부되었습니다.
jquery-1.4.2.min.124, 행 127 문자 344
이 에러는 크로스 도메인 AJAX 콜에서 발생했다고 들었습니다.근데 왜 IE만 날 못살게 구는 거야?IE 솔루션이 있습니까?
그리고 이게 제 AJAX입니다.
$.ajax({
url: thisURL,
dataType: "json",
data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()},
success: function(ret){
callback(ret)
}
});
IE에서는 크로스 사이트용으로 XHR 대신 XDomainRequest를 사용해야 합니다.다음과 같은 것을 시도해 보세요.
if ($.browser.msie && window.XDomainRequest) {
// Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("get", url);
xdr.onload = function() {
// XDomainRequest doesn't provide responseXml, so if you need it:
var dom = new ActiveXObject("Microsoft.XMLDOM");
dom.async = false;
dom.loadXML(xdr.responseText);
};
xdr.send();
} else {
// your ajax request here
$$.ajax({
url: thisURL,
dataType: "json",
data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()},
success: function(ret){
callback(ret)
}
});
}
언급
http://forum.jquery.com/topic/cross-domain-ajax-and-ie
고객님의 시나리오에 적합한지 잘 모르겠습니다.
xdr = new XDomainRequest();
xdr.onload=function()
{
alert(xdr.responseText);
}
xdr.open("GET", thisUrl); //thisURl ->your cross domain request URL
//pass your data here
xdr.send([data]);
여기서 더 많은 지침을 찾을 수 있습니다.
이것으로 저는 문제를 원만히 해결했습니다.
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
jQuery 이후와 스크립트 전에 설치/컴파일하고 $.ajax 메서드를 정상적으로 사용하면 나머지는 자동으로 처리됩니다.
최신 JQuery(> jquery-1.8.0)를 사용해 본 적이 있습니까?버전 1.8.0 이후 IE9의 버그를 몇 가지 해결했습니다.아마 이것도 그럴 거예요.
http://blog.jquery.com/2012/08/30/jquery-1-8-1-released/
저도 비슷한 문제가 있어서 해결방법은 json 대신 jsonp를 사용하는 것이었습니다.이렇게 하면 IE를 위한 고객 버전을 알아낼 필요가 없었습니다.
이 작업은 json 서버 호스트가 콜백 요청 변수를 지원하거나 서버에 액세스할 수 있고 지원을 추가할 수 있는 경우에만 수행할 수 있습니다.여기 그 과정을 이해하는데 도움이 된 페이지가 있습니다..net mvc는 초점을 맞췄지만 json과 jsonp의 차이를 잘 볼 수 있습니다.
http://blogorama.nerdworks.in/entry-EnablingJSONPcallsonASPNETMVC.aspx
액세스 중인 도메인을 확인합니다. 다음 응답 헤더가 있어야 합니다.
"Access-Control-Allow-Methods" : "POST, GET, OPTIONS"
"Access-Control-Allow-Origin" : "http://www.mydomain.com" or "*"
다른 도메인이 스크립트 요청을 허용합니다.응답에 추가하는 헤더는 P3P 헤더입니다.
"p3p" : "CP=IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
도움이 될 거야
나도 비슷한 문제에 직면해 있었다.파일 업로드 컨트롤을 사용하고 있었는데 숨겨져 있어서 파일 업로드와 파일 업로드 이벤트를 Ajax 방식으로 제어하려고 하는 다른 요소가 있었습니다.
파일 업로드 컨트롤을 직접 사용해 보십시오.이 문제를 해결했습니다.
이 버그(그리고 여기 구글)가 있습니다만, 그 이유는 매우 달랐습니다.따라서 교차 사이트가 없는데도 이 액세스 거부 오류가 표시되는 경우: 전송된 값을 다시 확인하십시오.
잘못된 다음 식을 사용하여 변수 중 하나에 영향을 준다고 가정합니다.
urlVar = $("theID").val // without () this was the error!
[...] 전화:
data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()},
Google/FF 에서는 문제가 없습니다(수신 서버측을 확인해 주세요). 그러나 IE 에서는 송신을 거부합니다.
JQuery를 버전 1.10.1에서 1.10.2로 변경했는데 이 문제는 해결된 것 같습니다.
MS는 업계 권고안을 채택하기보다는 나름의 방식을 모색하고 있는 것으로 보인다.이치노
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest/blob/master/jQuery.XDomainRequest.jshttpsgithub.com/MoonScript//blob/master/jQuery.XDomainRequest.js
다음과 같이 Ajax URL 요청에 'callback=?'을(를) 추가하십시오. http://wsvdmeer.blogspot.com.es/2012/08/bugfix-getjson-not-working-in-ie.html
언급URL : https://stackoverflow.com/questions/5087549/access-denied-to-jquery-script-on-ie
'source' 카테고리의 다른 글
React에서 컴포넌트 이름 가져오기 (0) | 2023.03.05 |
---|---|
http://www.google.com/로부터의 응답에 대한 "요청된 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다" 오류입니다. (0) | 2023.03.05 |
HTML5 비디오에서 오른쪽 클릭을 비활성화하시겠습니까? (0) | 2023.03.05 |
디렉티브의 method 인수가 AngularJS에 지정되어 있는지 확인하는 방법 (0) | 2023.03.05 |
비활성 JSON 문자열을 자동으로 수정하려면 어떻게 해야 합니까? (0) | 2023.03.05 |