문제

IE6을 사용하여 다른 도메인의 서버에서 JSONP 응답을 검색할 때 문제가 발생했습니다.

웹 페이지와 동일한 도메인에 있는 서버에 대해 JSONP를 사용하여 동일한 AJAX 호출을 수행하면 모든 브라우저(IE6 포함)에서 모두 잘 작동합니다.그러나 JSONP를 사용하여 도메인(XSS) 간에 호출을 하면 Internet Explorer 6이 잠깁니다.특히 CPU가 100%로 급증하고 '성공' 콜백에 도달하지 않습니다.도메인 간 이동에 성공한 유일한 경우는 응답이 매우 짧을 때(일반적으로 150바이트 미만)입니다.응답의 길이가 중요한 것 같습니다.

저는 jQuery 1.2.6을 사용하고 있습니다.나는 $.getJSON() 메소드와 $.ajax(dataType:"jsonp") 메서드가 성공하지 못했습니다.이는 FF3 및 IE7에서 훌륭하게 작동합니다.비슷한 문제가 있는 다른 사람을 찾을 수 없었습니다.나는 이러한 유형의 기능이 IE6의 jQuery에서 완벽하게 지원된다고 생각했습니다.

어떤 도움이라도 대단히 감사하겠습니다.

앤드류


다음은 AJAX 호출을 수행하는 HTML 페이지의 코드입니다..이 파일(및 jquery 라이브러리)의 로컬 복사본을 만들고 IE6을 사용하여 촬영해 보세요.나에게는 항상 응답이 렌더링되지 않은 채 CPU가 급증하게 됩니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
    <script type="text/javascript" src="Scripts/jquery-1.2.6.min.js"></script>
    <script type="text/javascript" src="http://devhubplus/portal/search.js"></script>
</head>
<body>
<a href="javascript:test1(500, 'wikiResults');">Test</a>
<div id="wikiResults" style="margin-top: 35px;"></div>

<script type="text/javascript">
    function test1(count, targetId)
    {
        var dataSourceUrl = "http://code.katzenbach.com/Default.aspx?callback=?";
        $.getJSON(dataSourceUrl, {c: count, test: "true", nt: new Date().getTime()}, function(results) {
                var response = new String();
                response += "<div>";
                for(i in results)
                {
                    response += results[i];
                    response += " ";

                }
                response += "</div>";
                $("#" + targetId).html(response);
        });
    }


</script>
</body>
</html>

다음은 응답으로 반환되는 JSON입니다.JSLint에 따르면 유효한 JSON입니다(주변 메서드 호출을 제거한 후).실제 결과는 다를 수 있지만 이는 실패를 초래하는 가장 간단한 예처럼 보였습니다.서버는 'Application/JSON'유형의 응답을 반환하는 ASP.NET 응용 프로그램입니다. 응답 유형을 'Application/JavaScript'및 'Application/X-JavaScript'로 변경하려고 시도했지만 영향을 미치지 않았습니다.도움을 주셔서 정말 감사드립니다.

jsonp1222350625589(["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18"

,"19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38"

,"39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58"

,"59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78"

,"79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98"

,"99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115"

,"116","117","118","119","120","121","122","123","124","125","126","127","128","129","130","131","132"

,"133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149"

,"150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166"

,"167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183"

,"184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200"

,"201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217"

,"218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234"

,"235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251"

,"252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268"

,"269","270","271","272","273","274","275","276","277","278","279","280","281","282","283","284","285"

,"286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302"

,"303","304","305","306","307","308","309","310","311","312","313","314","315","316","317","318","319"

,"320","321","322","323","324","325","326","327","328","329","330","331","332","333","334","335","336"

,"337","338","339","340","341","342","343","344","345","346","347","348","349","350","351","352","353"

,"354","355","356","357","358","359","360","361","362","363","364","365","366","367","368","369","370"

,"371","372","373","374","375","376","377","378","379","380","381","382","383","384","385","386","387"

,"388","389","390","391","392","393","394","395","396","397","398","399","400","401","402","403","404"

,"405","406","407","408","409","410","411","412","413","414","415","416","417","418","419","420","421"

,"422","423","424","425","426","427","428","429","430","431","432","433","434","435","436","437","438"

,"439","440","441","442","443","444","445","446","447","448","449","450","451","452","453","454","455"

,"456","457","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472"

,"473","474","475","476","477","478","479","480","481","482","483","484","485","486","487","488","489"

,"490","491","492","493","494","495","496","497","498","499"])
도움이 되었습니까?

해결책

당신은이 응답을 너무 좋아하지 않을 것이지만, 그것이 당신의 서버쪽에 있다고 확신합니다.

이유는 다음과 같습니다.

나는 당신의 시나리오를 재현했고 JSONP 응답자와 함께 달릴 때 당신이 설명했듯이 IE6 교수형을 얻습니다.

그러나 JSONP 응답자를 내 코드로 변경하면 (위의 내용과 정확히 동일한 출력) 문제없이 (모든 브라우저, 특히 IE6) 작동합니다.

함께 조롱 한 예는 다음과 같습니다.

http://jsbin.com/udako (편집 http://jsbin.com/udako/edit)

콜백이 맞습니다 http://jsbin.com/rs.php?callback=?

작은 노트 - 처음에는 문자열 길이를 의심했습니다. 즉, IE의 줄은 ~ 1MB의 최대 길이가 있다는 것을 읽었습니다. 어쨌든 배열 푸시 - 일반적으로 더 빠릅니다.

다른 팁

완전히 관련이 없을 수도 있지만 IE6에서는 onclick 이벤트 핸들러에서 코드가 시작될 때 JSONP 콜백이 실행되지 않을 수 있다는 사실을 방금 발견했습니다.

이 문제의 해결 방법은 클릭 이벤트 대신 HREF를 통해 코드를 첨부하는 것입니다.

당신은 JSON이 jslint? UR이 있고 완전한 jQuery lib를 포함하는 경우 디버깅하거나 JSON을 게시 할 수 있으며 문제를 재현 할 수 있습니다. 주어진 정보에서 말하기가 매우 어렵습니다. IE6에서 깨지는 JSON의 키의 실제 이름으로 이상한 것을 보았습니다.

Mime-Type : Application/X-JavaScript를 사용해 보셨습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top