我有一個關於Prototype在IE瀏覽器中處理CORS的問題< 10.我注意到對Ajax.Request調用交叉源URL會失敗在IE9中默默無聞地檢查服務器的訪問日誌,很明顯這個請求從未被製作過。Ajax.Request在IE8/9中無法與CORS一起工作,無法正常運行
經過一番閱讀似乎IE8/9必須使用自己的XDomainRequest
對象,以使CORS,但原型的Ajax.getTransport
函數返回XMLHttpRequest
對象,我明白不允許在IE8/9 CORS?
I have found a patch for jQuery對於同一個問題,這告訴我這也可能是Prototype的問題,我只是找不到任何發佈的東西。
我實現了一個有點哈克修復:
if (window.XDomainRequest) {
// Use Microsoft XDR for IE8 and IE9
var xdr = new XDomainRequest();
xdr.open('POST', url);
xdr.onload = function() {
var data = xdr.responseText.evalJSON();
callback_handler(data.domain);
};
setTimeout(function(){
xdr.send();
}, 0);
} else {
new Ajax.Request(url,
{
method: 'post',
onSuccess: function(response)
{
var data = response.responseText.evalJSON();
callback_handler(data.domain);
}
}
);
};
...但如果有人(或原型本身)有一個更好的解決方案,我想知道?基於Ajax.getTransport方法的來源
有一個合併的請求,可以幫助CORS請求工作,這裏https://github.com/sstephenson/prototype/pull/88。它不在1.7.1發行版中,但是你可以從github repo構建或者使用這個非官方版本http://cdnadmin.freewaypro.com/libraries/16 –
啊有趣!然而,這個拉取請求似乎正在解決所有瀏覽器中的Prototype和CORS問題,但不是IE8/9問題,它特別涉及那些版本中的'XMLHttpRequest'對象不能處理跨域請求,以及Prototype如何' t似乎佔了這一點。 –
您的權利 - 我會看看是否可以一起獲取處理「XDomainRequest」對象的合併請求。 –