2016-04-26 36 views
6

La mia applicazione è in esecuzione in HTTPS con un certificato valido da una delle autorità note. Sfortunatamente sto usando un'API di terze parti che non supporta HTTPS.La chiamata all'endpoint non sicuro da un sito Web viene eseguita in HTTPS - nginx

Il risultato è il messaggio noto Contenuto misto: mydomain.com ha richiesto un endpoint XMLHttpRequest non protetto .

E 'possibile aggiungere un'eccezione al server Web per consentire di chiamare questa API non sicuro !! Sto usando Nginx BTW.

Se non ciò che può essere altre possibilità per risolvere questo problema.

Ho una soluzione, ma non piace perché sarà un inconveniente prestazioni:

implementare un'API che agisce come proxy, ricevono le richieste dall'applicazione attraverso HTTPS e rendere le richieste ai l'API di terze parti genera HTTP.

+0

fatto la mia risposta risolve il problema? Se hai bisogno di aiuto con la configurazione, posso. – khrm

+0

@khrm ci proverò domani e ti aggiornerò –

risposta

3

anch'io ho avuto questo problema. Dovrebbe venire tutto su una pagina e richiedere https se si sta utilizzando https e non si desidera ricevere avvisi/errori. Non è necessario implementare un'API per il proxy se si utilizza nginx. Qualunque cosa realizziate sarà un successo in termini di prestazioni, come si suppone correttamente. Basta usare il proxy pass in nginx. Nella nostra configurazione, abbiamo:

location /thirdparty/ { 
     proxy pass http://thirdpartyserver/; 
} 

Avviso la barra finale nel passaggio proxy, io continuo a tutte le terze parti che sono api http in https://myserver/thirdparty/requesturl. La barra finale rimuove la terza parte mentre effettua una richiesta. Così diventa, http://thirdpartyserver/request

di riferimento ufficiale: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

0

Per consentire contenuti misti, i singoli utenti devono consentirli nei loro browser. Consentire il contenuto HTTP da una fonte è sufficiente a compromettere la sicurezza di HTTPS, quindi i browser vietano i contenuti misti per impostazione predefinita. Le soluzioni che vedo sono:

  1. Come liberarsi di HTTPS (che io non lo consiglio)
  2. a fare quello che ha suggerito e le richieste dei proxy attraverso (questo non è ancora grande sicurezza-saggio)
  3. Sbarazzarsi del contenuto HTTP

Google ha alcune raccomandazioni per gli sviluppatori sotto il punto 1 (ma sono fondamentalmente eco sopra): https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content#step-1

+0

Grazie per la tua risposta, non mi libererei di HTTPS. esaminato questo articolo ma non ha trovato quello che sto cercando, pubblicato come qualcuno potrebbe dare un'altra idea. –

+0

Sì, quell'articolo ha sostanzialmente delineato quello che ho detto sopra. È sfortunato dal punto di vista dell'usabilità, ma fondamentale dal punto di vista della sicurezza che il contenuto misto è bloccato – winhowes