2012-08-31 11 views
5

So che c'è una domanda quasi doppia, ma la risposta non è affatto soddisfacente.È possibile effettuare una richiesta JSONP da HTTPS a HTTP?

Ho bisogno di fare geocoding utilizzando il servizio Openstreetmap che gira su HTTP.

Il mio sito viene eseguito su HTTPS.

Sembra impossibile eseguire la richiesta JSONP da https a http, il browser (Chrome) si lamenta di contenuti non sicuri.

Qualche soluzione?

risposta

5

Il motivo per cui il browser si lamenta di contenuti non sicuri è che il contenuto non è sicuro. L'intero scopo con una pagina sicura è che tutto è sicuro e affidabile.

È possibile impostare una pagina proxy nel sito protetto che richiede il contenuto non protetto. Lì dovresti verificare il contenuto prima che venga inviato al browser, in modo che sia effettivamente sicuro, non solo fingendo di essere sicuro.

+0

Così, in uno scenario reale, il mio JQuery dovrebbe aprire una finestra popup in http (unica soluzione mi viene in mente per), ottieni la risposta JSONP e la analizza? – Cranio

+1

In uno scenario reale, non caricare i contenuti tramite canali non criptati su una pagina protetta. Se non si è seriamente interessati alla sicurezza, basta usare HTTP in primo luogo. – Tgr

+1

@Cranio: No, il proxy di cui sto parlando è una pagina sul server. Si fa una richiesta https, e fa una richiesta http al servizio, verifica la risposta e la restituisce al browser. – Guffa

3

Se si desidera effettuare una richiesta POST a un servizio esterno che viene eseguito in HTTP mentre la richiesta iniziale proviene da HTTPS, sarà sempre considerata non sicura. C'è, per quanto ne so, non c'è modo di aggirarlo.

Che cosa si può fare, è POST al proprio back-end che invia un'altra richiesta POST al servizio in esecuzione su HTTP. Da lì basta restituire il valore restituito dal servizio HTTP.

+0

Dovresti ** non ** solo restituire il valore dal servizio, devi prima convalidarlo. Il proxy sta prendendo dati non sicuri e restituisce dati protetti, quindi deve assumersi la responsabilità di verificare che sia effettivamente sicuro. – Guffa

+0

Alla fine probabilmente si desidera restituire i dati, se sono sicuri. Altrimenti non è utile eseguire la richiesta in primo luogo. –

+0

Ho detto che dovresti prima convalidarlo. Cosa pensi venga dopo? ;) – Guffa

3

Per chi può interessare, questo è il modo in cui l'ho risolto io stesso.

1) il mio codice Javascript chiama una pagina AJAX sul mio server con il parametro che ho bisogno di trasmettere al servizio di

2) la pagina AJAX fa una richiesta tramite CURL utilizzando l'indirizzo

3) I disinfettare la risposta e trasformarlo in JSON

4) con JavaScript richiamata-on-successo che utilizzare i dati

+0

Sì, sembra buono. La pagina proxy non deve restituire la risposta invariata. – Guffa

+0

@Guffa: sì, è una coppia di coordinate, molto facile da disinfettare tramite PHP. Grazie dell'aiuto :) – Cranio