Déterminer si l'appel ajax a échoué en raison de l'insécurité de la réponse ou de connexion refusée

J'ai fait beaucoup de recherche, et ne pouvait pas trouver un moyen de gérer cela. Je suis en train d'effectuer un appel ajax jQuery à partir d'un serveur https à un locahost https serveur exécutant jetée avec un certificat auto-signé. Mon problème est que je ne peut pas déterminer si la réponse de connexion est refusée ou qu'une insécurité réponse (en raison de l'absence de certificat d'acceptation). Est-il un moyen de déterminer la différence entre les deux scénarios? Le responseText, et statusCode sont toujours les mêmes dans les deux cas, même si dans la console chromée je vois une différence:

net::ERR_INSECURE_RESPONSE
net::ERR_CONNECTION_REFUSED

responseText est toujours "" et statusCode est toujours à "0" pour les deux cas.

Ma question est, comment puis-je déterminer si un jQuery ajax appel a échoué en raison de ERR_INSECURE_RESPONSE ou en raison de ERR_CONNECTION_REFUSED?

Une fois que le certificat est accepté tout fonctionne bien, mais je veux savoir si le serveur localhost est à l'arrêt, ou à sa place et l'exécution, mais le certificat n'a pas encore été acceptée.

$.ajax({
    type: 'GET',
    url: "https://localhost/custom/server/",
    dataType: "json",
    async: true,
    success: function (response) {
        //do something
    },
    error: function (xhr, textStatus, errorThrown) {
        console.log(xhr, textStatus, errorThrown); //always the same for refused and insecure responses.
    }
});

Déterminer si l'appel ajax a échoué en raison de l'insécurité de la réponse ou de connexion refusée

Même d'effectuer manuellement la demande-je obtenir le même résultat:

var request = new XMLHttpRequest();
request.open('GET', "https://localhost/custom/server/", true);
request.onload = function () {
    console.log(request.responseText);
};
request.onerror = function () {
    console.log(request.responseText);
};
request.send();
  • je vais poster mon code, mais ce n'est pas un code javascript d'erreur. Veuillez lire attentivement ma question.
  • Les deux autres erreurs de rappel des arguments de donner toute information additionnelle? function (xhr, status, msg) {... Je doute qu'ils seront, mais la peine d'essayer.
  • Obtenez-vous les différents codes d'erreur dans un autre navigateur? Cela peut être généré et bloqué par google Chrome.
  • tous les paramètres de l'erreur de rappel sont toujours les mêmes
  • tous les navigateurs sont de me donner les mêmes réponses. Je suis perplexe à ce sujet.
  • Pas de. À partir d'un serveur vers un autre serveur. Le serveur jetty (fonctionnement en locahost) a correctement défini la SCRO en-têtes de parce que une fois que j'ai accepter le certificat, tout fonctionne comme prévu. Je veux déterminer si le certificat doit être accepté ou la jetée de l'est vers le bas.
  • Il est tout à fait possible que le manque d'informations à partir du navigateur est entièrement volontaire. Simplement une "erreur" serait de fournir certains nombre d'informations pour un projet de hacker, par exemple. "Ce système a quelque chose à l'écoute sur le port etc."
  • Êtes-vous en mesure d'accéder à la ressource à l'url dans le navigateur? Normalement, un code d'état de 0 se produit avec le cross-site scripting (où l'accès est refusé) ou de demander une URL qui est inaccessible (erreur de frappe, des problèmes de DNS, etc). Peut-être avoir un coup d'oeil à this
  • Oui, j'ai accès à la ressource par l'url, il frappe à partir de mon navigateur fonctionne bien et j'ai l'écran où vous devez accepter le certificat.
  • Avez-vous regardé tout le serveur en-têtes de réponse via la fonction XMLHttpRequest.getAllResponseHeaders() il pourrait y avoir quelque chose dans les en-têtes qui peuvent les aider.
  • Je l'ai essayé. Même résultat malheureusement.
  • Pourquoi essayez-vous de le faire dans le navigateur? Pourquoi ne pas le faire côté serveur où vous avez accès à plus d'informations détaillées sur l'erreur?
  • ce n'est pas quelque chose que je veux, c'est quelque chose que j'ai besoin de la conception et de la nature de ce que je suis en développement. côté serveur n'est pas une option.

InformationsquelleAutor taxicala | 2015-06-25