Обнаружить поддержку сервера/сайта для междоменных XMLHttpRequests?
-
12-11-2019 - |
Вопрос
Мне интересно узнать, какой минимальный кроссбраузерный код Javascript (jQuery тоже подойдет) можно использовать для проверки того, поддерживает ли сайт, на который я хочу отправлять междоменные запросы AJAX, CORS
.
Я знаю, что у jQuery есть метод проверки того, браузер поддерживает это.Но мне бы очень хотелось иметь возможность проверить, удаленный сайт тоже поддерживает это.
Я думал, что мне просто нужно проверить заголовок HTTP, но, конечно, XHR выдаст исключение при попытке выполнить междоменный запрос к сайту, который его специально не поддерживает.
Но есть ли способ проверить, что исключение, созданное XMLHttpRequest
произошло из-за того, что сайт не поддерживал CORS
а не что-то еще идет не так?(Он не обязательно должен поддерживать XDomainRequest.)
В любом случае я не уверен, что это лучший минимальный/самый быстрый кроссбраузерный способ получить HTTP HEAD
использование AJAX, что, как я полагаю, является более легким способом, а не получением страницы и т. д.
Вариант использования:Как только я узнаю, поддерживает ли браузер и провайдер AJAX CORS
или нет, я могу выбрать, отправлять ли более функциональный JSON
/CORS
запросы или вернуться к JSONP
запросы при необходимости.
Решение
Насколько Спецификация, это невозможно.
Если возникла сетевая ошибка:В случае ошибок DNS, сбоя переговоров TLS или другого типа сетевых ошибок примените шаги сетевой ошибки.Не запрашивайте какого-либо взаимодействия с конечным пользователем...
В противном случае:Выполните проверку совместного использования ресурсов.Если он возвращает ошибку, примените действия, связанные с сетевой ошибкой...
Не существует специального способа определить случай, когда CORS не разрешен, поскольку Действия при сетевой ошибке применяются в любом случае.