jueves, 27 de febrero de 2014

Ajax Solucion al Dominio Cruzado / Ajax Cross Domain Solution | uncaught exception: Permiso denegado al llamar al método XMLHttpRequest.open Solution

Hola A todos

Debido a ciertos problemas que he tenido con Ajax al momento de llamar a un dominio o IP diferente
respecto a los bloqueos que hacen los navegadores  me he decidido a postear aqui una solución diferente a las propuestas de liberar en cada navegador a las llamadas  a otros dominios.



La idea es no hacer ninguna modificacion en nuestro navegador y hacer que nuestra llamada apunte al mismo servidor donde se encuentra nuestra aplicacion y que este se encargue de obtener los datos la pa pagina remota

Ejemplo en Jquery


 function leerDatosBalanza(){
                       var ip_domain = $("#ip").val();
                       $.ajax({
                            type: "POST",
                            url: "include/Ajax.class.php",
                            data: "action=leer_datos_balanza&ip_domain="+ip_domain,
                            async:true,
                            dataType: "html",
                            timeout:8000,
                            beforeSend: function(objeto){
                                $("#msg").html("Conectado con: "+ip_domain+"...    ");
                            },
                            complete: function(objeto, exito){
                                if(exito=="success"){
                                   $("#msg").html("Ok");
                                   $("#kilaje_real").val(objeto.responseText);
                                } else{
                                     $("#msg").html("No se pudo conectar con la maquina de la Balanza!");
                                    alert("Error all leer datos de la Balanza. Verifique la direccion IP de la Balanza!");
                                }
                            }
                        });
                    }



En el Servidor   Ajax.class.php


<?php

        $ip_domain =  $_REQUEST['ip_domain'];
        $datos =  file_get_contents("http://$ip_domain/serial/Indicador_LR22.php");
        echo $datos;

?>




// Maquina Remota

El programa Indicador_LR22.php  que se encuentra en la maquina remota es otro programa PHP
que devuelve un resultado minimo

De esta manera nuestro servidor principal es el que se encarga de hacer la peticion remota en vez de que sea el navegador sin necesidad de configuracion alguna en los Navegadores.