Обнаружить поддержку сервера / сайта для междоменных запросов XMLHttp? - PullRequest
4 голосов
/ 24 февраля 2012

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

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

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

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

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

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

1 Ответ

1 голос
/ 02 декабря 2013

Что касается спецификации , это невозможно.

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

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

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

...