solicitudes peticiones origin falta example dominio domain cruzado cross control cabecera allow javascript http xmlhttprequest

javascript - peticiones - Configuración de Firefox para habilitar la solicitud Ajax de dominio cruzado



peticiones cross domain ajax (11)

¿Has intentado utilizar la solicitud de ajax de jQuery? A partir de la versión 1.3 jQuery admite ciertos tipos de solicitudes ajax de dominio cruzado.

Citando de la referencia anterior:

Nota: Todas las solicitudes remotas (no en el mismo dominio) se deben especificar como GET cuando ''script'' o ''jsonp'' es el tipo de datos (porque carga el script usando una etiqueta de script DOM). Las opciones de Ajax que requieren un objeto XMLHttpRequest no están disponibles para estas solicitudes. Las funciones completas y de éxito se llaman al finalizar, pero no reciben un objeto XHR; las funciones beforeSend y dataFilter no son llamadas.

A partir de jQuery 1.2, puede cargar datos JSON ubicados en otro dominio si especifica una devolución de llamada JSONP, que se puede hacer de esta manera: "myurl? Callback =?". jQuery reemplaza automáticamente el? con el nombre correcto del método para llamar, llamando a su devolución de llamada especificada. O bien, si configura el tipo de datos en "jsonp", se agregará automáticamente una devolución de llamada a su solicitud de Ajax.

Necesito permitir temporalmente el dominio cruzado XMLHttpRequest. Cambiar la configuración de seguridad de Firefox parece ser el camino a seguir. Pero he intentado con this y this pero no funcionaron. ¿Alguien ha podido configurar esto antes? Gracias.


¿Qué tal usar algo como mod_proxy? Luego, se ve a su navegador como si las solicitudes fueran al mismo servidor, pero realmente se están reenviando a otro servidor.


Aquí está la cosa, no hay forma de deshabilitar "temporalmente" XMLHttpRequest de dominio cruzado, si puede deshabilitarlo temporalmente, entonces puede deshabilitarse permanentemente. Este es un problema bastante común en la programación de AJAX de hoy en día y generalmente se resuelve utilizando la técnica conocida como scripts de dominio cruzado.

La idea aquí es que si llama a una secuencia de comandos entre dominios, devuelve los resultados de JavaScript (JSON) que luego se pasan a una función en su extremo.

Aquí hay algunos ejemplos de código para ilustrar cómo puede verse desde la perspectiva del código JavaScript:

function request_some_data() { var s = "http://my.document.url.com/my_data?p1=v1&p2=v2&callback=myfunc"; try { try{ document.write("<scr"+"ipt type=''text/javascript'' src=''"+s+"''></scr"+"ipt>"); } catch(e){ var x = document.createElement("script"); x.src = s; document.getElementsByTagName("head")[0].appendChild(x); } } catch (e) { alert(e.message); } }

A continuación, definirá una función en su código que recibe los datos y en el servidor que "maneja" el caso de devolución de llamada, aquí está el JavaScript del lado del cliente:

function myfunc(data) { alert(data); }

Y en el lado del servidor, aquí estoy dando un ejemplo de PHP, pero esto se puede hacer con la misma facilidad en Java o cualquiera que sea su tecnología de servidor:

<?php if($_GET["callback"]) { print($_GET["callback"] . "("); } /* place your JSON object code/logic here */ if($_GET["callback"]) { print(");"); } ?>

Tenga en cuenta que lo que está generando en el servidor termina siendo algo de JavaScript que se ejecuta en el lado del cliente.


Estoy frente a esto desde el file:// . Me gustaría enviar consultas a dos servidores desde un archivo HTML local (un banco de pruebas).

Este caso particular no debería ser ningún problema de seguridad, pero solo Safari lo permite.

Aquí está la mejor discusión que he encontrado sobre el tema.


Intenté usar esa cosa de ''UniversalBrowswerRead'' también y no funcionó. Es posible que pueda agregar un encabezado ''permitir'', pero no he intentado hacerlo todavía. Es bastante nuevo.

Puede encontrar más información here


La forma manual de editar la configuración de Firefox es el camino a seguir, pero es un inconveniente cuando tienes que hacerlo a menudo.

En su lugar, puede instalar un complemento que lo hará por usted con un solo clic.

Uso CORS everywhere , lo cual funciona muy bien para mí.

Aquí hay un enlace al instalador


Para los navegadores modernos, puede probar el siguiente enfoque:

https://developer.mozilla.org/en/HTTP_access_control

En resumen, debe agregar lo siguiente en el encabezado de respuesta del SERVER (el siguiente permite el acceso desde foo.example ):

Access-Control-Allow-Origin: http://foo.example Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER Access-Control-Max-Age: 1728000

Tenga en cuenta que X-PINGOTHER es el encabezado personalizado insertado por JavaScript, y debe diferir de un sitio a otro.

Si desea que cualquier sitio acceda a su servidor en Ajax, use * lugar.

Editar:

Cuando respondí la pregunta por primera vez en 2009 , en realidad me encontré con el mismo problema y trabajé con la configuración del lado del servidor.

No había ningún complemento en FF o Chrome para entonces.

Sin embargo, ahora tenemos alternativas con el complemento del navegador, compruebe la respuesta de tsds


Para permitir el dominio cruzado:

  1. enter about:config
  2. acepta ser cuidadoso
  3. ingrese security.fileuri.strict_origin_policy en la barra de búsqueda
  4. cambiar a falso

Ahora puede cerrar la pestaña. Normalmente, ahora puede realizar una solicitud de dominio cruzado con esta configuración.

Mira here para más detalles.



Si simplemente no quiere perder su tiempo en cuestiones de dominios cruzados durante el desarrollo y las pruebas de su aplicación, puede usar el complemento Force CORS for FF.

ACTUALIZACIÓN: parece que este complemento ya no existe. Pero hay otra opción: esta extensión de Chrome


Utilicé Fiddler como un proxy. Fiddler redirige las llamadas de localhost a un servidor externo.

Configuré Firefox para usar el proxy manual (127.0.0.1 puerto 8888). Fiddler captura las llamadas y las redirige a otro servidor, utilizando filtros de URL.