2015-02-18 8 views
5

La mia app AngularJS utilizza $http.get() con https urls. Se il server utilizza un certificato autofirmato, Chrome rifiuterà la richiesta e registrerà un errore ERR_INSECURE_RESPONSE nella console.Come gestire ERR_INSECURE_RESPONSE?

Vorrei rilevare questo errore specifico e richiedere all'utente di configurare il proprio server con un certificato valido.

Ho provato $http.error e $httpProvider.interceptors per ottenere informazioni su questo errore, ma non sono disponibili informazioni pertinenti nei parametri di errore.

Capisco che Chrome sta rifiutando la richiesta piuttosto che il server, ma utilizzando angolare, c'è comunque di catturare che Chrome ha respinto la richiesta con l'errore ERR_INSECURE_RESPONSE?

+0

promise.error non ti dà nulla? Questo dovrebbe darti lo stato e le intestazioni che vengono con il rifiuto. Lo stato – ribsies

+0

è 0, i dati sono nulli e statusText è vuoto. – row1

+0

non funzionerà per quello che ti serve? Lo stato 0 indica che la richiesta non è andata a buon fine. – ribsies

risposta

0

Ho avuto lo stesso problema nel mio progetto ionica, ma non v'è alcun modo per superare questo problema lato client, questo è problema di sicurezza, andare in impostazioni del server per la configurazione SSL, modificare DHPARAMS a 2048 bit chiave, che risolto il mio problema,

Nota: il mio server è Amazon S3

0

ho lottato con questo per un po ', cercando di capire come ottenere un tipo di errore in errore di callback $ http e mostrano un utile messaggio agli utenti. Tuttavia, non sembra esserci alcun modo per determinare questo errore specifico, l'unico modo per determinarlo è verificare se lo response.status è uguale a -1 (questo accade se la richiesta è stata interrotta per qualche motivo) - ma potrebbe anche essere -1 in altri casi, come la mancanza della connessione internet. Così alla fine ho modificato il messaggio di errore, mostrato sullo stato -1, per spiegare all'utente cosa potrebbe essere sbagliato.

Inoltre, nel mio caso gli utenti devono inserire l'indirizzo del server, quindi ho aggiunto anche il controllo se non si tratta di un indirizzo IP (gli indirizzi IP non possono avere un certificato SSL valido, solo autofirmato, che causerebbe un errore precedente):

if (server_url.match(/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}/)) { 
    // Show error message like "only domain names are allowed" 
} 

Spero che questo aiuti.