2015-05-15 3 views
-1

Я пытаюсь построить простую функцию-оболочку для создания CORS Ajax запросов в IE 8:Vanilla JavaScript CORS с XDomainRequest в IE8 не работает

function getCORS(url, success) { 
    var xhr = new XDomainRequest(); 
    xhr.open('GET', url); 
    xhr.onload = success; 
    xhr.send(); 
    return xhr; 
} 

getCORS('http://foo.com/?q=test', function(request){ 
    console.log(request.currentTarget.response || request.target.responseText); 
}); 

Однако IE 8 возвращается "Доступ запрещен", хотя CORS запросов в современных браузерах с использованием «XMLHttpRequest()» работают правильно. Есть идеи?

+1

хорошо IE8 поддерживает XMLHttpRequest, поэтому он всегда будет использовать это. Ошибка проверки. – epascarello

+1

Почему downvote? Никаких объяснений? –

+0

При использовании 'var xhr = new XDomainRequest();' напрямую, IE8 говорит «Доступ запрещен». Итак, даже с рабочей проверкой IE 8 по-прежнему не работает здесь ... –

ответ

1

Internet Explorer XDomainRequest никогда не отправит заголовки Cookies или Authorization. Это означает, что если цель вашего запроса защищена, запрос никогда не может быть аутентифицирован.

Если вам действительно нужно это делать (в прошлом я должен был это делать для собственной потоковой HTTP-потоковой передачи), вам нужна цель XDomainRequest для защиты с использованием схемы авторизации, которая не использует файлы cookie или заголовок Authorization (http основной auth). Например, сначала вы можете получить какой-то токен с защищенного адреса, а затем отправить этот токен на ваш целевой объект XDomainRequest.