Chcę wykonywać wywołania AJAX na bezpieczny serwer korzystający z samopodpisanego certyfikatu. W środowisku, w którym jest używana moja aplikacja, wszystko jest w porządku - mogę dostarczyć certyfikat CA użytkownikom i zainstalować je przed użyciem aplikacji. Czasami jednak użytkownik próbuje odwiedzić aplikację przed zainstalowaniem certyfikatów. W takich przypadkach aplikacja po cichu zawiedzie - przynajmniej w Firefoksie (najczęstszy przypadek problemu), wygląda na to, że połączenie cichnie umiera, nawet bez odpalania procedury obsługi błędów. FWIW, jeśli użytkownik odwiedza na serwerze rzeczywistą stronę, otrzyma ostrzeżenie zaświadczenie.Połączenia AJAX z niezaufanym (samopodpisanym) HTTPS nie działa dyskretnie
Mogę włamać się do obejścia - powiedzmy, zrób zapytanie o puls/ping i skonfiguruj zegar watchdoga, aby sprawdzić, czy serwer zareaguje na czas - ale to wydaje się, cóż, hacky. Wolałbym przetestować połączenie z wyprzedzeniem. Jaki jest "właściwy" sposób, aby upewnić się, że serwer, z którym chcesz rozmawiać, ma zaufany certyfikat z poziomu Javascript? Jeśli to robi różnicę, robię moje żądania AJAX przez JQuery.
AKTUALIZACJA: Tutaj jest niesamowita cisza. Okazuje się, że AJAX nie był problemem. Byłem pewny na podstawie symptomów, które były związane z samopodpisanymi certyfikatami, ale brak błędu AJAX był niepokojący, szczególnie. biorąc pod uwagę specyfikację związaną z odpowiedzią poniżej. Inny członek zespołu przybił do niego: programy do obsługi błędów AJAX nie uruchamiały się, ponieważ JQuery nigdy nie została załadowana! Uwzględniliśmy JQuery z innej subdomeny naszej witryny, również hostowanej na HTTPS - i użytkownicy dodali wyjątki dla naszej usługi Service.example.com, ale nie js.example.com. Wygląda na to, że jeśli wskażesz znacznik <script>
na niezaufanym bezpiecznym połączeniu, to również ulegnie awarii po cichu.
{/ headdesk}
Czy obserwowane zachowanie różni się od niemożności skontaktowania się z serwerem w ogóle, na przykład po zaniku połączenia sieciowego? – martona