2012-12-27 17 views
21

Sto usando Jira in https e ho alcune regolazioni che vorrei fare con qualche JS in più. My JS è ospitato su un server non sicuro (nessun https disponibile).Come forzare il caricamento di contenuti dinamici e non sicuri in Chrome?

Quando ho dinamicamente caricare il file JS insicuro inserendolo nel DOM (mediante un'estensione del browser), Chrome mi dice:

[bloccato] La pagina all'indirizzo https://jiraserver/browse corse contenuti non protetti da http://myserver/jira.js.

Posso vedere come questo è molto sicuro e tutto, ma non mi interessa. Voglio caricare quel file JS insicuro. Come posso dire a Chrome di fidarsi di me e fare semplicemente ciò che dico?

Il mio metodo di inserimento (nel codice di estensione):

document.body.appendChild((function(s){s.src='http://myserver/jira.js';return s;})(document.createElement('script'))); 
+1

perché non è possibile utilizzare "https: // myserver/jira.js"? – ama2

+0

Perché non aggiungere la sorgente di jira.js al corpo invece di provare a scaricare il browser? – jeremy

+0

@ ama2 Perché 'myserver' non server https. Non ha un certificato. @jeremy Come potrei ottenere il codice sorgente? Il punto è di avere il codice sorgente 'dinamico' in modo che possa cambiare su myserver e cambiare automaticamente su 'jiraserver'. – Rudie

risposta

20

Secondo this Chrome Support Q&A è possibile lanciare il vostro Chrome con la seguente riga di comando di segnalazione per evitare che Chrome da controllare per contenuti non protetti:

--allow-running-insecure-content

Ecco some documentation su come eseguire Chrome con le bandiere di comando

+1

Woohoo! Grazi. In realtà penso di aver già visto quella pagina ... Forse ho pensato che fosse troppo difficile aggiungere quella bandiera. Continuo a pensare che sia stupido non è configurabile. – Rudie

+0

Per utente mac: ''/ Applicazioni/Google Chrome.app/Contents/MacOS/Google Chrome' --allow-running-insecure-content>/dev/null 2> & 1 &' da http://superuser.com/ a/524510/290504 – Anderson

+0

@Rudie È stato risolto? Non riesco a risolvere questo problema con la bandiera. – verystrongjoe

3

Chrome semplicemente non viene caricato uno script insicuro in una pagina protetta.

Il tuo jira.js ha il da caricare da un server? Il modo migliore per iniettarlo nella pagina è includerlo nel pacchetto di estensioni.

var s = document.createElement('script'); 
s.src = chrome.extension.getURL("jira.js"); 
s.onload = function() { 
    this.parentNode.removeChild(this); 
}; 
(document.head||document.documentElement).appendChild(s); 

Se necessario carico da un server, suppongo proprio interno potrebbe fare una richiesta XHR per lo script, poi iniettare la risposta nella pagina.

// make a XHR request, then... 
var s = document.createElement('script'); 
s.textContent = codeFromXHR; 
(document.head||document.documentElement).appendChild(s); 
s.parentNode.removeChild(s); 
+0

Will XHR rispetto caching? Scaricarlo di nuovo e di nuovo è ... non ottimale. Non posso semplicemente dire a Chrome di ignorare le sue stupide regole di sicurezza ?? È il mio computer! Ci deve essere un flag = ( – Rudie

+0

Non è necessario iniettare cose in 'document.documentElement' btw ... =) Solo 'head' e 'permessi' http://www.w3.org/TR/ html401/sgml/dtd.html # html.content – Rudie

+0

Sì, XHR segue tutte le regole di caching applicabili come quelle del browser "normale". Non si può semplicemente aggirare le regole di sicurezza: non fornirebbero molta sicurezza se fosse possibile. – josh3736

1

Ho avuto lo stesso problema: Il nostro client collega un file CSS e un file js ospitato nel nostro server su un dominio che non è sicuro.

Lo risolveremo utilizzando Amazon CloudFront. Essi server HTTPS utilizzando i loro certificati che è verificato.

Questa non è una cattiva soluzione per l'uso poiché la CDN è spesso una buona idea e queste risorse sono alquanto statiche. (Il file CSS è adattato per ogni cliente ed è in realtà generato ma è possibile configurare un TTL corretto e il CDN svuotato se necessario)

Si noti che la soluzione CDN può anche essere più conveniente rispetto all'acquisto effettivo di un certificato in base al proprio carico di dati.

0

Ho riscontrato lo stesso problema e ho riscontrato che se eseguiamo l'accesso al nostro account google in Chrome, Chrome interrompe il caricamento del contenuto non protetto in https.

Se si utilizza la finestra di navigazione in incognito per caricare il sito Web con contenuto non sicuro, funzionerà.

Problemi correlati