2011-07-09 14 views
3

私のコードはIEの動作には推奨されていますが、ChromeとFFでのみ動作します。別のドメインからのURLにアクセスする正しい方法がありますか?さらに、ドメインは、私が所有するドメインであり、これにアクセスしようとしているスクリプトへのアクセスを許可することができますInternet ExplorerでクロスドメインXMLHTTPRequestsを作成する方法

<script language="javascript" type="text/javascript"> 
function sendRequest(url,callback,postData) { 
    var req = createXMLHTTPObject(); 
    if (!req) return; 
    var method = (postData) ? "POST" : "GET"; 
    req.open(method,url,true); 
    req.setRequestHeader('User-Agent','XMLHTTP/1.0'); 
    if (postData) 
     req.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 
    req.onreadystatechange = function() { 
     if (req.readyState != 4) return; 
     if (req.status != 200 && req.status != 304) { 
//   alert('HTTP error ' + req.status); 
      return; 
     } 
     callback(req); 
    } 
    if (req.readyState == 4) return; 
    req.send(postData); 
} 

var XMLHttpFactories = [ 
    function() {return new XMLHttpRequest()}, 
    function() {return new ActiveXObject("Msxml2.XMLHTTP")}, 
    function() {return new ActiveXObject("Msxml3.XMLHTTP")}, 
    function() {return new ActiveXObject("Microsoft.XMLHTTP")} 
]; 

function createXMLHTTPObject() { 
    var xmlhttp = false; 
    for (var i=0;i<XMLHttpFactories.length;i++) { 
     try { 
      xmlhttp = XMLHttpFactories[i](); 
     } 
     catch (e) { 
      continue; 
     } 
     break; 
    } 
    return xmlhttp; 
} 

function handleRequest(req) { 
    var MyResponse = req.responseText; 
    document.open(); 
    document.write(MyResponse); 
    document.close(); 
} 

sendRequest("http://anotherdomain.com/urlwithcontentneeded.php",handleRequest); 


</script> 
+0

でそれを行うには、2つの方法があります痛みですが、あなたはそれはChromeとFirefoxで働いていますか?それは同じ起源政策のためにであってはならない。 http://en.wikipedia.org/wiki/Same_origin_policy – Dan

+0

ドメイン上のスクリプトにはAccess-Control-Allow-Origin *があります - はい、Safariを含むChromeとFFの両方が動作します。 – InnateDev

答えて

2

IEはこのようにクロスドメインリクエストをsuppoortしませんが、代わりにXDomainRequestオブジェクトを使用しての方法を持っていない、参照をhttp://msdn.microsoft.com/en-us/library/cc288060(v=vs.85).aspx

それはしかしでほとんど同じように動作し、はい、それは別のブラウザ

+0

次のブログ記事には、CORSをサポートするすべてのブラウザで機能するcreateCORSRequest()関数があります。http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-リソース共有/ – monsur

関連する問題