Tiempo atrás trabajando con Wordpress me topé con el detalle de que al querer usar una conexión HTTPS e intentar cargar un iframe pero desde una ruta HTTP este se bloqueaba. Afortunadamente la solución era muy sencilla, de hecho pueden verla si entran a este post, ahora me encuentro con una situación similar pero al trabajar con Blogger y recibir visitas desde Facebook, la url siempre se cambia a HTTPS y los iframes que vienen desde una url HTTP se bloquean y todo se ve mal. Veamos como resolver ese problema.
Como mencionaba en el post señalado al principio, un recurso que viene desde una url HTTPS se considera seguro, mientras que un recurso desde una ruta HTTP no. Un recurso desde una fuente HTTPS puede cargarse sin problemas en una web usando solo HTTP sin problemas (salvo configuraciones extras), pero al revés no es posible porque se "rompería" la seguridad del sitio web: un sitio seguro cargando contenido inseguro... como que algo no encaja.
Aunque es posible que Blogger trabaje totalmente usando HTTPS, creo que no es buena idea después de todo, porque Blogger no es como Wordpress donde podemos subir lo que gustemos al servidor y enlazarlo, en Blogger eso no existe. Blogger (que yo sepa) no ofrece ningún tipo de hospedaje para archivos, solo nos dan el blog y todos los adornos tienen que venir desde servidores externos que en su mayoría no son HTTPS, por eso no serviría de mucho, todo se bloquearía sin remedio.
Sigo conservando la configuración HTTP para Blogger (aunque no es lo más recomendable pero que otro remedio queda). El problema es que si compartimos alguno de los post en este blog en Facebook, cuando el usuario hace clic en el enlace para visitar el post, Facebook siempre cambia la ruta por HTTPS y entonces el blog funciona a medias. ¿Cómo resolver el problema?.
<script language='JavaScript'>
var pos, newurl;
var url = document.location.href;
//thanks to https://stackoverflow.com/questions/94037/convert-character-to-ascii-code-in-javascript
pos = url.toLowerCase().indexOf(String.fromCharCode(63,102,98,99,108,105,100));
if(pos != -1)
{
newurl = String.fromCharCode(104,116,116,112) + url.substr(5, pos-5);
location = newurl;
}
</script>
Guardamos los cambios y es todo.
¿Como funciona?, mediante la instrucción document.location.href obtenemos la dirección actual del blog (sea un post o la ruta principal) y la guardamos en la variable "url", como Blogger tiene la mala costumbre de convertir los caracteres ", ' y otros similares a secuencias de escape (me ha dado problemas para hacer funcionar correctamente algunos JavaScripts usaremos la función String.fromCharCode junto con la secuencia ?fbclid pero con su equivalente en código ASCII para detectar si venimos desde Facebook. Si la encontramos dentro de la variable url guardaremos su posición en la variable pos, si no se encuentra la variable pos valdrá -1, pero de lo contrario contendrá la posición de la secuencia.
Ahora todo lo que tenemos que hacer es verificar si la variable pos es diferente de -1, si es así extraeremos la dirección desde la posición 5 (para quitar https) hasta la posición de la cadena Facebook y completaremos (en código ASCII) la palabra "http" junto con el resto de la cadena. Finalmente redireccionaremos la web actual a la nueva dirección.
Ahora cuando alguien visite algún post que hemos compartido en Facebook blogger direccionará a HTTP siempre y los recursos externos no se bloquearán.
Aunque es posible que Blogger trabaje totalmente usando HTTPS, creo que no es buena idea después de todo, porque Blogger no es como Wordpress donde podemos subir lo que gustemos al servidor y enlazarlo, en Blogger eso no existe. Blogger (que yo sepa) no ofrece ningún tipo de hospedaje para archivos, solo nos dan el blog y todos los adornos tienen que venir desde servidores externos que en su mayoría no son HTTPS, por eso no serviría de mucho, todo se bloquearía sin remedio.
Sigo conservando la configuración HTTP para Blogger (aunque no es lo más recomendable pero que otro remedio queda). El problema es que si compartimos alguno de los post en este blog en Facebook, cuando el usuario hace clic en el enlace para visitar el post, Facebook siempre cambia la ruta por HTTPS y entonces el blog funciona a medias. ¿Cómo resolver el problema?.
La solución es la siguiente:
Colocar entre las etiquetas <BODY> y </BODY> de nuestra plantilla (hay que entrar a editar la plantilla que tengamos instalada. Para ello en la barra lateral derecha de nuestro panel de control de Blogger haremos clic en la opción "Tema" y presionaremos el botón "Editar HTML" el siguiente código fuente:<script language='JavaScript'>
var pos, newurl;
var url = document.location.href;
//thanks to https://stackoverflow.com/questions/94037/convert-character-to-ascii-code-in-javascript
pos = url.toLowerCase().indexOf(String.fromCharCode(63,102,98,99,108,105,100));
if(pos != -1)
{
newurl = String.fromCharCode(104,116,116,112) + url.substr(5, pos-5);
location = newurl;
}
</script>
Guardamos los cambios y es todo.
¿Como funciona?, mediante la instrucción document.location.href obtenemos la dirección actual del blog (sea un post o la ruta principal) y la guardamos en la variable "url", como Blogger tiene la mala costumbre de convertir los caracteres ", ' y otros similares a secuencias de escape (me ha dado problemas para hacer funcionar correctamente algunos JavaScripts usaremos la función String.fromCharCode junto con la secuencia ?fbclid pero con su equivalente en código ASCII para detectar si venimos desde Facebook. Si la encontramos dentro de la variable url guardaremos su posición en la variable pos, si no se encuentra la variable pos valdrá -1, pero de lo contrario contendrá la posición de la secuencia.
Ahora todo lo que tenemos que hacer es verificar si la variable pos es diferente de -1, si es así extraeremos la dirección desde la posición 5 (para quitar https) hasta la posición de la cadena Facebook y completaremos (en código ASCII) la palabra "http" junto con el resto de la cadena. Finalmente redireccionaremos la web actual a la nueva dirección.
Ahora cuando alguien visite algún post que hemos compartido en Facebook blogger direccionará a HTTP siempre y los recursos externos no se bloquearán.
Procedencia de las imágenes:
|
File: Logo código fuente
URL: https://www.returngis.net/wp-content/uploads/2013/05/HTML-logo.jpg Licencia: Creative Commons |
¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.
No hay comentarios. :
Publicar un comentario