2015-10-01 13 views
27

dopo l'aggiornamento a Safari 9 sto ottenendo questo errore nel browser:Safari 9 esecuzione non autorizzata di contenuto non protetto?

[Warning] [blocked] The page at https://localhost:8443/login was not allowed to run insecure content from http://localhost:8080/assets/static/script.js. 

Qualcuno sa come abilitare l'esecuzione di contenuti non protetti sul nuovo Safari?

+0

btw, per ovviare a questo problema, al momento stiamo servendo tutte le risorse tramite https. ma non dovrebbe consentire a Safari un modo per abilitare i contenuti misti? no? – Staelen

+4

Questo è estremamente frustrante. Esistono motivi legittimi per cui è necessario disporre di una pagina https che carichi qualcosa (ad esempio un RPC o un servizio locale). Apple non dovrebbe disabilitare il comportamento senza un modo per riaverlo. –

+0

In realtà questa è una ragionevole precauzione di sicurezza da parte di Apple. Consentendo contenuti misti, qualcuno potrebbe iniettare codice dannoso o curiosare sulla sessione (se fosse dinamico).Se sei preoccupato dell'impatto sulle prestazioni dell'utilizzo di SSL/TLS, aggiungi il supporto HTTP/2 al tuo server. I benchmark mostrano un enorme miglioramento delle prestazioni che lo rende veloce quanto HTTP/1.1 quando si prelevano molte risorse o ajax dallo stesso dominio. –

risposta

3

Secondo il Apple support forums Safari non consente di disabilitare il blocco sul contenuto misto.

Anche se questo è frustrante per l'usabilità in casi legittimi come il tuo, sembra essere parte del loro sforzo per forzare la pubblicazione di contenuti sicuri che servono le migliori pratiche.

Come soluzione per voi è possibile aggiornare la connessione HTTP a HTTPS (che sembra averlo fatto) o proxy del contenuto tramite una connessione HTTPS con un servizio abilitato HTTPS (o, nel caso, porta).

+0

Il problema è che alcuni servizi smettono di funzionare (geolocalizzazione) se il tuo sito HTTPS si collega a una singola immagine HTTP oa un'altra risorsa non "sicura". Questo ha reso Safari 9 inutilizzabile i servizi di disabilitazione – Jamgold

+0

@Jamgold per contenuti misti o contenuti HTTP, anche quando è solo un'immagine è una buona idea da parte di Apple. Perché Safari non sa cosa intende fare il sito con i contenuti non sicuri e un intruso di livello di rete è in grado di manipolare contenuti non sicuri, consentendo a qualsiasi contenuto non protetto di compromettere le informazioni degli utenti esposte attraverso i servizi. – winhowes

+0

come già indicato da altri utenti, a volte non è possibile correggere il server Web da cui proviene l'HTML e altre volte si dispone di un server Web HTTPS con contenuto (immagini) collegato da altri siti (credo che il concetto originale del Web) e durante la notte Safari ha rotto tutto questo – Jamgold

1

È possibile risolvere il problema HTTPS utilizzando HTTPS in locale con un certificato SSL autofirmato. Heroku has a great how-to article about generating one.

Dopo aver impostato SSL su tutti i server di sviluppo, verrà comunque visualizzato un errore durante il caricamento della risorsa in Safari poiché viene utilizzato un certificato non attendibile (i certificati autofirmati SSL non sono considerati affidabili dai browser in quanto non possono essere verificati con un'autorità fidata). Per risolvere questo problema, puoi caricare l'URL problematico in una nuova scheda in Safari e il browser ti chiederà di consentire l'accesso. Se fai clic su "Mostra certificato" nel prompt, ci sarà una casella di controllo nella vista dettagli del certificato su "Consenti sempre contenuto da localhost". Controllare questo prima di consentire l'accesso memorizzerà le impostazioni in Safari per il futuro. Dopo aver permesso l'accesso, basta ricaricare la pagina originariamente mostrando un problema e si dovrebbe essere a posto.

Questo è un caso d'uso valido come sviluppatore, ma assicurati di comprendere appieno le implicazioni sulla sicurezza e i rischi che stai aggiungendo al tuo sistema apportando questa modifica!

0

Se come me avete

  • frontend su port1
  • backend su port2b
  • vuole caricare lo script http://localhost:port1/app.js da http://localhost:port2/backendPage

ho trovato una soluzione semplice: semplicemente reindirizzare con risposta http tutti http://localhost:port2/localFrontend/*path a http://localhost:port1/*path dal tuo b configurazione del server Ackend.

Quindi è possibile caricare lo script direttamente da http://localhost:port2/localFrontend/app.js anziché dall'URL diretto di frontend. (oppure puoi configurare un url di base per tutte le tue risorse)

In questo modo, Safari sarà in grado di caricare il contenuto da un altro dominio/porta senza bisogno di alcuna configurazione https.

Problemi correlati