2012-08-31 41 views
5

Sé que hay una pregunta casi duplicada, pero la respuesta no es satisfactoria en absoluto.¿Es posible hacer una solicitud JSONP de HTTPS a HTTP?

Necesito hacer geocodificación usando el servicio Openstreetmap que se ejecuta a través de HTTP.

Mi sitio se ejecuta a través de HTTPS.

Parece imposible hacer una solicitud JSONP desde https a http, el navegador (Chrome) se queja de contenido inseguro.

¿Alguna solución?

Respuesta

5

La razón por la que el navegador se queja de contenido inseguro es porque el contenido es inseguro. Todo el propósito con una página segura es que todo es seguro y confiable.

Puede configurar una página de proxy en su sitio seguro que solicite contenido inseguro. Allí debe verificar el contenido antes de enviarlo al navegador, de modo que sea realmente seguro, no solo que simule ser seguro.

+0

Así, en un escenario real, mi jQuery debe abrir una ventana emergente en http (única solución que se me ocurre para), obtener la respuesta JSONP y analizarlo? – Cranio

+1

En un escenario real, no debe cargar contenido a través de canales no encriptados en una página segura. Si no se toma en serio la seguridad, solo use HTTP en primer lugar. – Tgr

+1

@Cranio: No, el proxy del que estoy hablando es una página en el servidor. Hace una solicitud de https y realiza una solicitud http al servicio, verifica la respuesta y la devuelve al navegador. – Guffa

3

Si desea realizar una solicitud POST a un servicio externo que se ejecuta en HTTP mientras la solicitud inicial proviene de HTTPS, siempre se considerará como insegura. Por lo que sé, no hay forma de evitarlo.

Lo que puede hacer es realizar una POST hacia su servidor que envíe otra solicitud POST al servicio que se ejecuta bajo HTTP. A partir de ahí, solo devuelve el valor devuelto por el servicio HTTP.

+0

Debe ** no ** simplemente devolver el valor del servicio, debe validarlo primero. El proxy está tomando datos inseguros y volviendo a datos seguros, por lo que tiene que asumir la responsabilidad de verificar que en realidad sea seguro. – Guffa

+0

Al final es probable que desee devolver los datos, si es seguro. De lo contrario, no sirve de nada realizar la solicitud en primer lugar. –

+0

Dije que primero debe validarlo. ¿Qué crees que viene después? ;) – Guffa

3

Para quienes le concierne, así es como lo resolví yo mismo.

1) mi código Javascript llama a una página de AJAX en mi servidor con el parámetro que necesito para reenviar al servicio

2) la página AJAX hace una solicitud a través de CURL usando la dirección

3) I desinfectar la respuesta y convertirla en JSON

4) con devolución de llamada-en-el éxito de Javascript utilizo los datos

+0

Sí, eso se ve bien. La página de proxy no tiene que devolver la respuesta sin cambios. – Guffa

+0

@Guffa: sí, es un par de coordenadas, muy fácil de desinfectar a través de PHP. Gracias por ayudar :) – Cranio

Cuestiones relacionadas