Я хочу сделать AJAX-вызовы на безопасный сервер, который использует самозаверяющий сертификат. В среде, где мое приложение используется, все в порядке - я могу предоставить сертификат CA для пользователей и установить их перед использованием приложения. Однако иногда пользователь пытается посетить приложение перед установкой сертификатов. В этих случаях приложение тихо проваливается - по крайней мере, в Firefox (наиболее распространенный случай проблемы), похоже, что звонок бесшумно умирает, даже не отключая обработчик ошибок. FWIW, если пользователь посещает фактическую страницу на сервере, они получают предупреждение о сертификации.
Я мог бы взломать обходной путь - скажем, сделать запрос heartbeat/ping и настроить сторожевой таймер, чтобы увидеть, отвечает ли сервер вовремя, - но это кажется, ну, взломанным. Я предпочел бы иметь возможность проверить соединение раньше времени. Какой "правильный" способ убедиться, что сервер, с которым вы хотите поговорить, имеет надежный сертификат из Javascript? Если это имеет какое-то значение, я выполняю свои запросы AJAX через JQuery.
ОБНОВЛЕНИЕ: Здесь есть потрясающая фишка. Оказывается, AJAX не проблема. Я был уверен, что на основании симптомов, что это было связано с самозаверяющими сертификатами, но отсутствие ошибки AJAX вызывало беспокойство, особенно. с учетом спецификации, указанной в ответе ниже. Другой член команды прибил его: обработчики ошибок AJAX не стреляли, потому что JQuery никогда не загружался! Мы включили JQuery из другого субдомена нашего сайта, также размещенного на HTTPS, и пользователи добавили исключения для нашего сайта .example.com, но не js.example.com. Очевидно, если вы укажете тэг <script>
в безопасном безопасном соединении, это тоже не работает.
{/headdesk}