Обнаружить поддержку сервера/сайта для междоменных XMLHttpRequests?

StackOverflow https://stackoverflow.com/questions/9433949

Вопрос

Мне интересно узнать, какой минимальный кроссбраузерный код Javascript (jQuery тоже подойдет) можно использовать для проверки того, поддерживает ли сайт, на который я хочу отправлять междоменные запросы AJAX, CORS.

Я знаю, что у jQuery есть метод проверки того, браузер поддерживает это.Но мне бы очень хотелось иметь возможность проверить, удаленный сайт тоже поддерживает это.

Я думал, что мне просто нужно проверить заголовок HTTP, но, конечно, XHR выдаст исключение при попытке выполнить междоменный запрос к сайту, который его специально не поддерживает.

Но есть ли способ проверить, что исключение, созданное XMLHttpRequest произошло из-за того, что сайт не поддерживал CORS а не что-то еще идет не так?(Он не обязательно должен поддерживать XDomainRequest.)

В любом случае я не уверен, что это лучший минимальный/самый быстрый кроссбраузерный способ получить HTTP HEAD использование AJAX, что, как я полагаю, является более легким способом, а не получением страницы и т. д.

Вариант использования:Как только я узнаю, поддерживает ли браузер и провайдер AJAX CORS или нет, я могу выбрать, отправлять ли более функциональный JSON/CORS запросы или вернуться к JSONP запросы при необходимости.

Это было полезно?

Решение

Насколько Спецификация, это невозможно.

Если возникла сетевая ошибка:В случае ошибок DNS, сбоя переговоров TLS или другого типа сетевых ошибок примените шаги сетевой ошибки.Не запрашивайте какого-либо взаимодействия с конечным пользователем...

В противном случае:Выполните проверку совместного использования ресурсов.Если он возвращает ошибку, примените действия, связанные с сетевой ошибкой...

Не существует специального способа определить случай, когда CORS не разрешен, поскольку Действия при сетевой ошибке применяются в любом случае.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top