javascript - has - XMLHttpRequest no puede cargar no permitido por Access-Control-Allow-Origin
access-control-allow-origin javascript (4)
Estoy tratando de obtener acceso a los datos API de education.com. Sin embargo, sigo recibiendo un error que dice el error:
XMLHttpRequest no puede cargar http://api.education.com/service/service.php?f=schoolSearch&key=mykey&sn=sf&v=4&city=Atlanta&state=ga&Resf=json . Origin no está permitido por Access-Control-Allow-Origin.
Mi código es el siguiente:
$(function(){
$.getJSON(''http://api.education.com/service/service.php?f=schoolSearch&key=mykey&sn=sf&v=4&city=Atlanta&state=ga&Resf=json'',
function(data) {
console.log(data);
});
});
¿Puede alguien ayudarme por favor?
En ZF1 se puede hacer de la siguiente manera:
public function indexAction() {
$turnkey = array(
"uris" => array("176.x.x:3478", "3478"),
"username" => "my_username",
"password" => "my_password"
);
$content = Zend_Json::encode($turnkey);
$this->getResponse()
->setHeader(''Access-Control-Allow-Origin'', "*")
->setHeader(''Content-Type'', ''application/json'')
->setBody($content)
->sendResponse();
exit;
}
No puede hacer esto con un navegador a menos que el servidor de education.com esté configurado para permitir solicitudes CORS ( Cross-Origin Resource Sharing
) (ese es el bit Access-Control-Allow-Origin
).
Sin embargo, su servidor podría realizar la solicitud en su nombre y luego podrá recuperar los datos desde allí.
No tanto una solución al problema, sino un truco para evitar el problema: inicie su navegador sin seguridad web:
in MacOS this would work as follows: cd to ../../Applications/Google/ Chrome.app/Contents/MacOS
then start the brwoser with the appropiate flag: Google/ Chrome --disable-web-security''
Nota: ¡Nunca use el navegador para navegación normal, esto es solo para ayudarlo en casos de emergencia! Aclamaciones
Un artículo sobre Cross Domain AJAX hace un tiempo aquí:
SOLICITUD AJAX DE DOMINIO CRUZADO CON RESPUESTA JSON PARA IE, FIREFOX, CHROME, SAFARI - JQUERY
La forma más fácil de manejar esto si tiene el control del servidor que responde es agregar un encabezado de respuesta para:
Access-Control-Allow-Origin: *
Esto permitirá AJAX de dominio cruzado. En PHP, querrás modificar la respuesta así:
<?php header(''Access-Control-Allow-Origin: *''); ?>
simplemente puede poner el conjunto de encabezado Configuración de Access-Control-Allow-Origin * en el archivo apache conf o htaccess simplemente funciona como un hechizo
Nota IMPORTANTE:
El comodín permitirá que cualquier dominio envíe solicitudes a su host. Recomiendo reemplazar el asterisco con un dominio específico en el que ejecutará las secuencias de comandos.