ajax - read - ¿Cómo habilitar la solicitud entre dominios en el servidor?
jquery ajax get (4)
@genesis Estoy de acuerdo con su respuesta, pero se requiere cuando el servidor está reactivando un objeto JSON y se encuentra en otro dominio, no creo que con jsonp tenga que hacer cambios en el lado del servidor. jsonp es resolver el problema CORS.
Tengo un archivo json alojado en mi servidor. Cuando intento hacer una solicitud AJAX "GET" al archivo json, falla.
Ver la consola en Safari, dice "Error al cargar el recurso".
Firebug muestra "200 OK", pero la respuesta no aparece. Incluso Firebug no muestra la pestaña JSON.
Creo que esto se debe a que las solicitudes de dominios cruzados no están permitidas con AJAX.
Me gustaría saber cómo puedo superar esto? Además, si deseo habilitar solicitudes entre dominios en mi servidor, creo que se debe crossdomain.xml
un archivo crossdomain.xml
o algo así. No estoy seguro, pero esto es lo que sé. Busqué en Google, pero no pude encontrar ningún enlace relevante.
Cualquier ayuda en esto es muy apreciada.
Gracias.
ACTUALIZACIÓN: No estoy usando ningún lenguaje de scripting del lado del servidor (PHP, ASP.NET, etc.). Estoy usando Plain HTML y JavaScript / jQuery.
ACTUALIZACIÓN-2:
Utilicé el siguiente código para realizar solicitudes entre dominios:
<script src="jquery-1.6.2.js"></script>
<script>
$(document).ready(function () {
$.ajax({
dataType: ''jsonp'',
data: '''',
jsonp: ''jsonp_callback'',
url: ''http://myhosting.net/myjsonfile.json'',
success: function (jsonData) {
alert("success")
alert(jsonData);
},
error: function(errorObj) {
alert(errorObj.statusText);
},
});
});
Cuando veo en la pestaña "Net" de Firebug, veo una pestaña JSON, y puedo ver la respuesta json. Sin embargo, no se llama al controlador de devolución de llamada de "éxito", pero se invoca el manejador de devolución de llamada de "error" y parseerror
la alerta que dice parseerror
.
¿Alguna idea de lo que podría estar mal?
Pon esto en tu .htaccess y plain ajax works
<ifModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
</ifModule>
la solución dada por genesis funcionó para mí, sin embargo, tuve que omitir la barra final en la url. es decir:
header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
en el servidor de destino
en php:
header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
en caso de que no desee utilizar el lenguaje de scripting del servidor: ponga esto en la consola (linux)
a2enmod headers
y a su archivo .htaccess agregar
Header set Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com