2012-05-01 5 views
3

jQuery 1.7.2를 사용 중이며 다른 도메인에 POST 요청을하고 싶습니다. POST 요청이어야합니다. 하지만 이것은 이 인터넷 익스플로러에서 작동하지 않습니다 (IE9에서 시도했습니다). 그것은 다른 모든 브라우저에서 작동합니다. 내가 다시 오류가인터넷 익스플로러에서 도메인 간 POST 요청 아약스

<script> 
jQuery.support.cors = true; 

jQuery(function() { 
    $.ajax({ 
     crossDomain : true, 
     cache: false, 
     type: 'POST', 
     url: 'http://someotherdomain/test.php', 
     data: {}, 
     success: function(da) { 
      console.log(JSON.stringify(da)) 
     }, 
     error: function(jqxhr) { 
      console.log('fail') 
      console.log(JSON.stringify(jqxhr)) 
     }, 
     dataType: 'json' 
    }); 
}); 
</script> 

:

나는이 스크립트가

내 PHP 파일은 다음과 같습니다
{"readyState":0,"status":0,"statusText":"Error: Access denied.\r\n"} 

: 않습니다 (IE9 포함)

<?php 
header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: GET, POST, DELETE, PUT, OPTIONS'); 
echo json_decode(array('success' => 'yes')); 
+0

가능한 중복 ([크로스 원산지 자원 공유를받는 방법 (CORS) 게시 요청이 작동] http://stackoverflow.com/questions/5750696/how-to-get-a-cross-origin -resource-sharing-cors-post-request-working) – Jon

+0

관련 링크 : http://stackoverflow.com/a/12014195/545328 – 65Fbef05

+0

중복 : http://stackoverflow.com/questions/13149122/jquery-ajax-cross- domain-form-submission-issues-with- – inf3rno

답변

2

인터넷 익스플로러 CORS을 지원하지 않습니다. 당신은 프록시 (응답을 곱슬 곱슬하여 쿼리를 재 게시 및 반환 동일한 도메인에 PHP 스크립트에 게시,) 모든 크로스 도메인 요청

1

스크립트가 올바른 모양을 가지고 있지만 난 당신이 변경해야 믿습니다

header('Access-Control-Allow-Origin: *'); 

에 {출처}가 가치있는이

header('Access-Control-Allow-Origin: x-requested-with'); 

또는

header('Access-Control-Allow-Origin: {Origin}'); 

전자 원본 헤더. 원산지가 주어지면 '*'를 넣는 것은 효과가 없을 것입니다.

또한 IE8과 IE9는 이에 대한 지원이 제한되어 있지만 수행 한 것처럼 jQuery.support.cors = true을 입력하면 작동합니다.

+0

내가 아는 한,'jQuery.support.cors'는 검색을 위해 읽기 전용입니다. – the0ther

+0

@theOther 아니요, jQuery의 문서에 따라 설정할 수 있습니다. "브라우저에서 XMLHttpRequest 객체를 만들 수 있고 해당 XMLHttpRequest 객체에 withCredentials 속성이있는 경우 cors는 true와 같습니다. 지원하지 않는 환경에서 도메인 간 요청을 사용하려면 아직 도메인 간 XHR 요청 (Windows 가젯 등)을 허용하고 $ .support.cors = true;를 설정하십시오. CORS WD ", http://api.jquery.com/jQuery.support/ – seeg

2

IE < 10에서 CORS를 지원하려면 XDomainRequest 개체를 사용하도록 ajax 메서드를 수정해야합니다. 이 플러그인은 당신을 위해 그것을합니다 : https://github.com/jaubourg/ajaxHooks

0

이것은 IE9에서 작동합니다.

<!DOCTYPE html> 
<head> 
<script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script language="javascript" type="text/javascript"> 
var url = "http://msdn.microsoft.com/en-us/library/windows/desktop/ms759148(v=vs.85).aspx"; 
function getRequest() { 
    try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } 
    catch (e) {alert("Error while getting 6.0");} 
    try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } 
    catch (e) {alert("Error while getting 3.0");} 
    try { return new ActiveXObject("Microsoft.XMLHTTP"); } 
    catch (e) {alert("Error while getting 2.0");} 
    throw new Error("This browser does not support XMLHttpRequest."); 
}; 
var request = getRequest(); 
request.open("POST", url, false); 
request.send(); 
alert("Content from :"+url+":"+ request.responseText); 
</script> 
</head> 
<h1>AJAX ActiveX</h1> 
관련 문제