origin has from error control chrome been allow javascript jquery json api getjson

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.