Запросы Ajax от Cross-origin не работают в Opera и IE9?

Я использую эту страницу - http://ecmazing.com/cors.html - чтобы сделать запрос Ajax с кросс-началом на этот ресурс: http://hacheck.tel.fer.hr/xml.pl

Он работает в Chrome, Safari и Firefox, но не в IE9 и Opera.

Код:

var pdata = {'textarea': 'test'};

$.post('http://hacheck.tel.fer.hr/xml.pl', pdata, function(data, status, xhr) {
    output.value = xhr.responseText;
});

(Ожидаемый результат - строка кода XML.)

Смотрите сами: http://ecmazing.com/cors.html

В IE9 и Opera выполняется обработчик error объекта XHR, и этот объект ошибки передается в:

{
    readyState: 4,
    status: 0,
    statusText: 'error'
}

Как вы можете видеть, этот объект ошибки не раскрывает много информации.

Как я могу заставить его работать в IE9 и Opera?

Ответ 1

См. запись для cors at whencaniuse.

Для Internet Explorer CORS "поддерживается несколько в IE8 и IE9 с использованием объекта XDomainRequest", поэтому вам нужно использовать альтернативный объект для его использования.

Opera просто не поддерживает его.

Если вам нужна кросс-доменная Ajax в Opera, используйте JSON-P.

Ответ 2

Я так расстроился, пытаясь использовать CORS с IE и jQuery, я написал библиотеку