Necesito temporalmente permitir el dominio cruzado XMLHttpRequest. Cambiar la configuración de seguridad de Firefox parece ser el camino a seguir. Pero lo intenté con this y this pero no funcionaron. ¿Alguien ha podido configurar esto antes? Gracias.Configuración de Firefox para habilitar la solicitud de ayax de dominio cruzado
Respuesta
Para los navegadores modernos, puede intentar el siguiente enfoque:
https://developer.mozilla.org/en/HTTP_access_control
En resumen, es necesario añadir lo siguiente en la cabecera de la respuesta SERVER
(la siguiente permite el acceso defoo.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 el X-PINGOTHER
es el encabezado personalizado que se inserta mediante JavaScript, y debe diferir del sitio para sentarse mi.
Si quiere que cualquier sitio acceda a su servidor en Ajax, use *
.
Editar:
La primera vez que respondieron a la pregunta por , de hecho me dio en el mismo problema, y trabajé alrededor de ella utilizando la configuración del lado del servidor.
No había ningún complemento en FF o Chrome para entonces.
Sin embargo, ahora tenemos alternativas usando el plugin lado del navegador, por favor, compruebe la respuesta de tsds
Este es un gran recurso: http://enable-cors.org/ – Booker
si entiendo correctamente, esto no resuelve el problema original si no puede cambiar el servidor – Aras
Tenga en cuenta que 'Access-Control-Allow-Origin: * 'no funcionará si también desea utilizar la opción' withCredentials' de XHR para enviar encabezados de cookies. Necesita especificar un dominio específico en ese caso. – dmkc
¿Ha intentado utilizar la solicitud de jQuery ajax? A partir de la versión 1.3 jQuery admite ciertos tipos de solicitudes ajax de dominio cruzado.
Citando la referencia anterior:
Nota: Todas remoto (no en el mismo dominio) las solicitudes deben especificarse que se obtiene cuando 'guión' 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 son llamadas al finalizar, pero no reciben un objeto XHR; las funciones beforeSend y dataFilter no son llamadas a .
A partir de jQuery 1.2, puede cargar JSON datos ubicados en otro dominio si especifica una devolución de llamada JSONP, que puede ser hecho de esta manera: "?? Myurl devolución de llamada =". jQuery reemplaza automáticamente el? con el nombre del método correcto para llamar, llamando a su devolución de llamada especificada. O bien, si establece el tipo de datos en "jsonp" se agregará automáticamente una llamada a su solicitud Ajax .
estamos usando esto para recuperar datos de json, pero esto es html que se incorpora a la página y es solo temporal, por lo que cambiar la configuración de Firefox debería ser el lo más simple de hacer – Pablote
¿Por qué el voto a favor? Usar las capacidades de dominio cruzado de un marco es una respuesta razonable a esta pregunta. El hecho de que HTML era obligatorio no se mencionaba en la pregunta, solo en el comentario de mi respuesta. – tvanfosson
He intentado usar esa cosa '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
¿Qué hay de 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 desactivar "temporalmente" XMLHttpRequest entre dominios, si puede deshabilitarlo temporalmente, se puede deshabilitar 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 es que si llama a un script de dominio cruzado devuelve resultados de JavaScript (JSON) que luego se pasan a una función en su extremo.
Aquí hay un código de ejemplo para ilustrar como puede ser observada desde un código perspectiva 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 el código que recibe los datos y en el servidor que "manejar" la caso de devolución de llamada, aquí está el JavaScript del lado cliente:
function myfunc(data) {
alert(data);
}
Y en el lado del servidor, aquí estoy dando un ejemplo PHP, pero esto se puede hacer con la misma facilidad en Java o lo que la historia de su lado del servidor la tecnología es:
<?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.
'"
Por supuesto que puede desactivarlo temporalmente. Por ejemplo, inicie Chrome con --disable-web-security. –
@JosephLust, tenga en cuenta que se le preguntó/respondió un poco antes de que Chrom tuviera un uso generalizado. – Michael
estoy frente a esto desde 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á el best discussion que he encontrado del problema.
¡Gracias! Supongo que no volveré a probar en Chrome. – tomdemuyt
Utilicé Fiddler como proxy. Fiddler redirige las llamadas de localhost a un servidor externo.
Configuré Firefox para utilizar el proxy manual (127.0.0.1 puerto 8888). Fiddler captura las llamadas y las redirige a otro servidor, utilizando filtros de URL.
Si simplemente no quiere perder el tiempo en cuestiones de dominio cruzado durante el desarrollo y la prueba de su aplicación, puede utilizar el complemento Force CORS para FF.
ACTUALIZACIÓN: Parece que este complemento ya no existe. Pero hay otra opción: Chrome extension
Forcecors es genial. Vale la pena mencionar que después de la instalación debe hacer clic en view => toolbars>> add-on bar. Luego, el botón cors se mostrará en la parte inferior derecha, haga clic en eso para habilitarlo. Descomprimí el xpi y veo que hay una función de alternar cuando se presiona un botón, pero nunca se ve el botón. – HMR
"Vale la pena mencionar que después de la instalación debe hacer clic en ver => barras de herramientas => barra de complementos". Usted, señor, es un santo – NcAdams
Parece que FF lo ha eliminado. – shashwat
La forma manual de editar la configuración de Firefox es el camino a seguir, pero es un inconveniente cuando debe hacerlo con frecuencia.
En su lugar, puede instalar un complemento que lo hará por usted con un solo clic.
Yo uso CORS everywhere
, que funciona muy bien para mí.
Aquí es a link to the installer
Las respuestas que solo tienen enlaces a otros recursos generalmente se consideran malas, ya que pueden cambiar a tiempo. Agregue la parte más relevante en la respuesta en sí. – Qirel
Para permitir varios dominios:
- entrar
about:config
- aceptar que tener cuidado
- entrar
security.fileuri.strict_origin_policy
en la barra de búsqueda - cambio en false
Ahora puede cerrar la pestaña. Normalmente, ahora puede realizar una solicitud de dominio cruzado con esta configuración.
Ver here para más detalles.
- 1. cómo habilitar la POST-ing de dominio cruzado en PHP?
- 2. Solicitud POST de dominio cruzado asíncrono a través de JavaScript
- 3. Solicitud de obtención de dominio cruzado en JS/JQuery
- 4. Cookies de dominio cruzado
- 5. AJAX llamada de dominio cruzado
- 6. Captura de errores HTTPHttpRequest de dominio cruzado
- 7. ¿Cómo usar el iframe para la solicitud de correo (de dominio cruzado)?
- 8. jquery autenticación de dominio cruzado
- 9. Sesiones PHP de dominio cruzado
- 10. JQuery dominio cruzado auth call
- 11. Una pregunta sobre el dominio cruzado (subdominio) solicitud ajax
- 12. localhost :: dominio cruzado ajax
- 13. CouchDB acceso de dominio cruzado de XMLHttpRequest?
- 14. Emisión de iframe de dominio cruzado
- 15. POST ajax de dominio cruzado en cromo
- 16. Leer dominio cruzado Respuesta de JSON
- 17. Cómo obtener la respuesta de solicitud de dominio cruzado en javascript
- 18. Dominio cruzado y google CDN para jquery
- 19. Instrucciones básicas para el dominio cruzado jsonp
- 20. es posible obtener la solicitud SOAP de dominio cruzado usando jquery
- 21. ¿Comprobación de inicio de sesión de dominio cruzado?
- 22. cookies de dominio cruzado Rails 3
- 23. Jquery getJSON problemas de dominio cruzado
- 24. Solicitud de Ext.Ajax.request OPCIONES de dominio cruzado cuando jQuery.ajax envía GET
- 25. ¿El subdominio se considera de dominio cruzado?
- 26. Detección de carga de contenido de iframe de dominio cruzado
- 27. javascript de dominio cruzado para acceder a localhost. ¿Posible?
- 28. Configuración de PHP para habilitar sesiones
- 29. EnableCrossAppRedirects: ¿Dónde se documenta la característica de dominio cruzado?
- 30. Dashboard Dominio cruzado AJAX con jquery
Si puede necesitar cambiar la configuración de seguridad de Firefox, ¿no podría usar un script de GreaseMonkey? –
Pruébalo en Chrome: http://stackoverflow.com/questions/3102819/disable-same-origin-policy-in-chrome – AgA
Prueba mi complemento de Firefox para habilitar el dominio cruzado con ajax aquí: https: // addons. mozilla.org/en-US/firefox/addon/cross-domain-cors/ –