![]() |
Problema al cargar codigo AJAX Estoy intentando ejecutar un script AJAX en el lado del cliente que llama a otra pagina en mi server, y lee la respuesta del navegador. Pero siempre que se carga la pagina sale una advertencia de seguridad que me gustaria eliminar... que no aparezca dado que no la suelen aceptar... el mensaje de error es el siguiente: "Esta pagina esta intentando el acceso a informacion fuera de su control. Esto presenta un riesgo de seguridad.¿Desea Continuar?" Xfavor si alguien sabe como evitar este mensaje le estare eternamente agradecido. El codigo AJAX es el siguiente: Código: <script language="javascript" type="text/javascript">Código: onLoad="clientSideInclude('includeone', 'http://url.com); |
Creo que lo que no le gusta es que le crees un obejto: Msxml2.XMLHTTP Prueba con solo el active obj -> Microsoft.XMLHTTP y si no va que pruebe new XMLHttpRequest() |
He intentado las dos cosas que me comentas, pero sigue fallando... O a lo mejor no lo he hecho bien... Es que no tengo mucha idea de AJAX... Alguna otra idea??? |
Aparte de esta advertencia de seguridad, que me gustaria quitar... tengo problemas, al poner el codigo en el server de algun cliente, porque se pega con los otros javascripts, y da el siguiente error: “Error: uncaught exception: Permiso denegado para llamar el método XMLHttpRequest.open” Y esta la razón que parece genera el error: “ese error ocurre porque con un XMLHttpRequest no puedes pedir datos de otro dominio, solo trabajar con el dominio local, es por razones de seguridad.” Estoy desesperado... en mi maquina funciona de pm, haciendo las pruebas como cliente desde otro dominio... pero en algunos servers me da este error... y siempre el de seguridad... A alguien s ele ocurre una solucion... O manera de que lo cambie... |
Si no sabes mucho de javascript busca otro codigo por ahi que genere el objeto xmlHttpRequest... el que tienes no parece el adecuado. Mira de que en vez de incluir los 2 objetos que tu tienes incluya los 2 que yo te digo. Y simplemente cambia la funcion que genera el objeto por la nueva... En cuanto a lo segundo esta muy claro. Por cuestiones de seguridad ajax nunca carga contenido externo al dominio en el que se encuentra... ignoro porque en casa te funciona ya que ajax no debería funcionar si no estas usando el protocolo http. Es decir desde file:///C:/tu_carpeta no debería funcionar. Para hacer funcionar a ajax de esta forma lo suyo es que uses algo de programacion de lado del servidor como php o asp. Con ellos puedes conseguir que una pagina tuya simplemente muestre exactamente lo que muestra otra pagina de internet. Así puedes digamos "engañar" a ajax (no le engañas, pero bueno , parecerá que si). Espero qu ete sirva. Iñaki. |
Buenas paranoid como te he dicho aqui tienes el codigo arreglado: (cuidado con los saltos de linea que se hayan podido ocurrir por no caber...) Código: <script type="text/javascript">Espero que ahora si que te salga. Iñaki. |
Hola Iñaki, lo he intentado con el codigo que tu me pasate, pero sigue sin funcionar... Se queja el navegador porque no tiene permisos... Al principio me decia que no existia la variable XHR y la cambie por req[n] que quedaria asin: Código: req[n].onreadystatechange=function(){if (req[n].readyState==4){ En Local seguia dando la advertencia de seguridad, y cnd la aceptabas ya te mostraba el contenido. Al meterlo en un server no me muestra la advertencia de seguridad , pero da un fallo de javascript que puedes ver en esta url: http://www.startupdot.com/pruebas_ca...r2_carlos.html Y el error reza asi: Permiso denegado :( Cuando intenta hacer el Código: req[n].open("GET", url, true);Muchas gracias por intentar ayudarme Iñaky, Carlos |
Buenas Paranoid. Bien visto lo del cambio de variable... estoy demasiado acostumbrado a usar XHR y a veces me cuelo ;) Te dire que tu codigo si que funciona pero como ya he comentado ajax no puede cargar contenidos de un servidor distinto al que te encuentras... Es una de las grandes carencias del objeto xmlhttprequest. Como conseguirlo entonces? Dices que de php si que controlas asi que la solucion va a ir por ahi. Lo que tienes que hacer es que ajax cargue una pagina de tu propio servidor hecha en php. Ese php lo unico que tiene que hacer es coger una URL y devolverte exactamente el HTML que encuentre en ella. Para ello creo que mejor que pidas ayuda en el foro de php o te mires tu mismo la referencia de PHP ya que veo que yo siempre he usado: file_get_contents y claro, no creo que eso valga para ir a un servidor externo. Suerte y ya que estas comentame que funcion de php te ha ido bien para hacerlo. Iñaki |
Problema al accesar otro URL Mira este problema es de seguridad y siempre te dara si queires accesar a otro URL distinto. Te aconsejo veas algo de seguridad de Java script y veras que lo solucionas. Yo vi ese problema hace dos dias. Tomate un libro y te explicara a detalla ese problema saludos |
yo me he dado cuenta de lo mismo, tambien note mañas con algunos exploradores ajax a veces falla si es que hay dos id repetidos tanto en la solicitud como en la pagina origen. tambien falla cuando el html no esta escrito de cierta forma logica ejemplo Código PHP: ajax a cargar Código PHP: FORMA CORRECTA Código PHP: Código PHP: he encontrado varios de estos errores. |
Aun no he solucionado este problema del todo, pero va en camino. Os dejo lo que he encontrado por ahora... En un principio el fallo radica en que no se pueden hacer peticiones entre servidores de distinto dominio por cuestinoes de seguridad. Esto tiene dos soluciones la mala dado que requiere una interactuacion por parte del usuario final: solo tendría que ir al apartado Opciones de Internet -> Seguridad -> Nivel Personalizado y activar la casilla Tener acceso a origen de datos entre dominios. Y la buena que seria montar un proxy en nuestro servidor, para que la consulta no salga de aqui. Teneis toda la info sobre esto en: yahoo.com/javascript/howto-proxy.html |
|
Ya probe con esta solucion, pero nohay manera, dado que en el servidor web del cliente es necesario que se pueda ejecutar php... y la mayoria de los clientes no pueden hacerlo... He encontrado otra posible solucion , pero no se como implementarla... Encontre otro articulo en http://Developers.yahoo http://www.theurer.cc/blog/2005/12/1...mp-your-proxy/ En el cual habla de hacerlo con Jason y javascript... lo cual haria como de proxy... Pero no e entero de como adaptarlo y que funcione correctamente... Porque no aprenderia Javascript hace años... |
Buenas paranoid... No estoy teniendo demasiado tiempo libre estos dias y no he podido contestarte... veo que os resistis a simplemente cargar con php la pagina que toca. Bueno en ese caso quizas la solucion pase por no usar ajax sino DHTML con iframes (vamos asincronia a la antigua) Creo que un codigo parecido a este debería valerte: Código: function LoadExterno(url,id) |
Ok, olvida mi ultimo post... con iframes tampoco te da permisos si el dominio es distinto al de la pagina padre... Nada, pero la verdad es que no entiendo porque no haceis una pagina en PHP que se dedique a cargar el HTML de otra externa... Habeis probado un PHP que por ejemplo se llame cargar_web.php Código PHP: cargar_web.php?URL=www.dominioexterno.com Si no es file_get_contents sera otra funcion pero vamos que la cosa es sencilla... |
Eliminado He eliminado este mensaje |
Hola vengava... Solo tengo que decirte que lo normal en un foro es dar soluciones a la gente no intentar que te hagan encargos... |
Tienes razón Tienes razón ikHuerta, lo acabo de eliminar. No había leido todo el post pero ahora al leerlo entiendo que suena fatal después de que la gente aportara lo que pudo y me voy a unir a este post. Acerca de tu último post antes del mio: Cita:
Te cuento como lo hice (no me permiten poner url's) por eso a donde pone servidor2.com hay que añadirle antes hachetetepe_dospuntos_barra_barra: En servidor1.com/peticion.php estaría este código: Código HTML: <html>Define una función y luego la llama con el parámetro recibido. PHP en servidor2.com/respuesta.php Código PHP: Espero que le sirva a alguien. Un saludo |
Un solucion inteligente si señor. Aportar que puede incluso usarse de la misma forma que se usa ajax. En este mismo foro me dieron la forma. Se trata de hacer una funcion que lo que haga es crear en la cabecera del documento la etiqueta script que cargue todo lo que nos interesa. De hecho podemos hacer una pagina en json y cargarla por este metodo de forma que se ejecute como si fuese ajax. te dejo unas pistas por si no lo conocias. Código: function aji(url){ |
Ahora que lo pienso, lo podía haber hecho más sencillo: test.php Código HTML: <div id="resultado">cargando...</div>Código PHP: |
Re: Problema al cargar codigo AJAX Tenía un problema similar, pero leyendo el post recordé algo que ví en el código del home de Gmail, y es que ahí, cuando escribes tu nombre de usuario, se carga de una "imagen invisible" que lleva unos parámetros. Eso me dió la sgte idea, por ejemplo con un prompt Código: var text = prompt('Nombre','');Salu2 |
| La zona horaria es GMT -6. Ahora son las 09:56. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.