CORS error con jquery

Actualmente estoy trabajando en un proyecto con la API de cloudapp y estoy usando jquery.
Aquí está mi código:

 $.ajax({
            headers: { "Accept": "application/json"},
            type: 'GET',
            url: 'http://cl.ly/2wr4',
            crossDomain: true,
            success: function(data, textStatus, request){
                console.log(data);
            }
 });

Cuando ejecuto esta obtengo respuesta 200 OK y este error en Firefox:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://cl.ly/2wr4. This can be fixed by moving the resource to the same domain or enabling CORS.

y este error en Google Chrome:

XMLHttpRequest cannot load http://cl.ly/2wr4. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

y no se registra nada en la consola.
Por favor, ¿cómo puedo solucionar este error?

Gracias.

  • Eche un vistazo a esta pregunta: stackoverflow.com/questions/5750696/… Usted necesita agregar Access-Control-Allow-Origin encabezado.
  • mejor usar el lado del servidor de la biblioteca como de PHP cURL.. Aquí una llamada ajax al servidor de lado de la página que tiene la biblioteca que hace la llamada & obtiene el resultado
InformationsquelleAutor mrHorse | 2014-09-18

4 Kommentare

  1. 5

    CORS (Cross-Origin Resource Sharing) es una de las características de HTML5 que permite que un sitio de acceso de otro sitio de recursos a pesar de ser bajo diferentes nombres de dominio.

    La especificación de W3C para CORS realmente hace un trabajo bastante bueno de proporcionar algunos ejemplos sencillos de los encabezados de respuesta, tales como la clave de la cabecera, Access-Control-Allow-Origin, y en otras cabeceras que debe utilizar para habilitar CORS en su servidor web.

    Si usted está buscando para obtener información específica sobre cómo configurar CORS en una variedad de servidores web, echa un vistazo a las Habilitar CORS sitio web para compartir. http://enable-cors.org/

    Basado en la URL que te han dado anteriormente, no creo que tenga un control en ese servidor. Por lo tanto, simplemente no funcionaría.

    Aunque haya habilitado la crossDomain: true, el servidor debe devolver necesarios encabezados tales como:

    Aquí una válida respuesta del servidor; el CORS específicos de los encabezados en negrita

    De Respuesta de HTTP:

    Access-Control-Allow-Origin: http://xyzcom
    Access-Control-Allow-Credentials: true
    Access-Control-Expose-Headers: FooBar
    Content-Type: text/html; charset=utf-8

    Una cosa que puede probar es este:

    $.ajax({
                headers: { "Accept": "application/json"},
                type: 'GET',
                url: 'http://cl.ly/2wr4',
                crossDomain: true,
                beforeSend: function(xhr){
                    xhr.withCredentials = true;
              },
                success: function(data, textStatus, request){
                    console.log(data);
                }
     });

    De lo contrario, usted necesita comunicarse con la API de proveedor.

    • Traté de configuración withCredentials a la verdad, pero tengo el mismo error.
  2. 3

    Una nota importante para los nuevos programadores es que todo en http://enable-cors.org/server.html se supone que tiene un servidor que ejecuta. Si eres nuevo, como estaba originalmente, este tipo de respuestas no sirven de nada.

    Si usted acaba de hacer un poco de código en su computadora, CodePen, etc – no se puede configurar esto.

    Que hay una diferencia importante entre el lado del servidor y del lado del cliente de secuencias de comandos – tu jquery se ejecuta en el lado del cliente (es decir, los usuarios de ordenador /navegador) y, como tal, no existe tal cosa como la configuración de los encabezados de allí.

    Finalmente comencé a avanzar con este problema cuando configuro mi propio servidor y mis propios archivos PHP (PHP del lado del servidor, como tal, su procesado en el servidor – no el navegador) y fue capaz de empezar a hacer las solicitudes de bien.

    Agregar esto para cualquier persona que se ahogó en las respuestas relacionadas con la "Header set Access-Control-Allow-Origin "*" respuesta. Lo que realmente me frustró cuando empecé así.

  3. 1

    para corregir el error, necesita habilitar CORS en el servidor. El cliente espera ver CORS cabeceras enviadas de regreso a fin de permitir la solicitud. Puede incluso enviar una solicitud de comprobaciones para asegurarse de que los conectores estén allí.

    Puede habilitar CORS lado del servidor para uno, varios o todos los dominios de golpear a su servidor. La configuración es diferente dependiendo del tipo de servidor.

    Consulte la siguiente página para más info : http://enable-cors.org/server.html

    Ya habilitado CORS solicitudes en su solicitud anterior, de modo que el lado del cliente debe estar todo listo.

    • Hola, he hecho un poco más de cavar, y que no parece que la API para cloudapp admite solicitudes que se envían directamente desde el navegador. Las bibliotecas son para el envío de solicitudes en el lado del servidor, que no debería activar la cruz error de dominio. Usted puede ser que necesite para enviar sus solicitudes desde el servidor y no en el cliente.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea