Después de un mes alejado de blog vuelvo con un interesante tema. Aca siempre hablamos de Desarrollo y Programación web, especialmente centrado en Ajax y temas relacionados. Justamente vamos a hablar del corazón de Ajax: el objeto XMLHttpRequest. Éste tiene un problema relacionado con la seguridad cuando tratamos de hacer llamadas a dominios externos con el método open(método,url); Un ejemplo aqui:
function objAjax(){
var xmlhttp=false;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function MostrarYahooHomePage(){
resultado = document.getElementById('resultado');
ajax=objAjax();
ajax.open("GET", "http://es.yahoo.com/"); //esta linea nos interesa
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
resul.innerHTML = ajax.responseText
}
}
ajax.send(null);
}
Este script nos dará un error porque no podemos abrir un documento que se encuentra en otro dominio. Lo apropiado es llamar a documentos que se encuentran en nuestro propio dominio. ¿Cuál es la solución? Existen algunas soluciones (como usar iframe). Pero la que me llamo la atención es la que encuentra en Jaslabs donde explica lo siguiente:
- Si tenemos nuestro servidor Apache, debemos asegurarnos de instalar o habilitar los módulos: mod_rewrite y proxy.
- Luego crear la siguiente regla: ^/yahoo_proxy http://www.yahoo.com/service [P] en el archivo .htaccess
- Ahora reemplazar la linea del método open por la siguiente: http.open("GET"."http://your_host/yahoo_proxy").
No lo he probado aún, pero teniendo en cuenta lo multifacético que es el servidor Apache… se ve funcional. Eso si lo probaré y les contaré…
Buena forma, aunque la encontre poco practica, pero tengo una duda. Como se si mi servidor tiene proxy habilitado, solo probando si funciona el codigo?
Saludos
Hace tiempo cuando lei sobre los “enlaces amigables o usables” decia un tutorial que debe modificar el archivo .htaccess y trabajar con los mod_*, averigue en la info de mi server si tenia esos modulos y … no mostraba nada de info, pregunte al servicio tecnico del host y … nada (estaban mas perdidos que yo), así que probe modificar el archivo .htaccess a riesgo propio y salio todo bien. de eso deduje que tenia los modulos mod_* del apache habilitados, por eso Victor será cuestión de probar…