jquery .ajax () Solicitud GET enviando OPCIONES

Estoy tratando de enviar una request ajax desde mi cuadro de desarrollo de localhost a un server usando

<!DOCTYPE html> <html> <head> <title>JSSample</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> </head> <body> <script type="text/javascript"> $(function() { var params = { format: "JSON", season: "2015REG" // Request parameters }; $.ajax({ url: "https://<mysite>/sub/" + params.format + "/" + params.season, beforeSend: function(xhrObj){ // Request headers xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","<mykey>"); }, type: "GET" }) .done(function(data) { alert("success"); console.log("Data: \n" + JSON.stringify(data)); }) .fail(function(error) { alert("error"); console.log("Error" + JSON.stringify(error)); }); }); </script> </body> </html> 

cuando miro en Firefox veo que en realidad está enviando una request de OPCIONES, que el server no responde (404 no encontrado), entonces recibo un error de request de origen cruzado.

 OPTIONS XHR https://mysite [HTTP/1.1 404 Resource Not Found 2437ms] Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://mysite (Reason: CORS header 'Access-Control-Allow-Origin' missing). 

¿Qué estoy haciendo mal? ¿Por qué jquery está intentando solicitar opciones cuando envío explícitamente un GET? Además, no soy el propietario de este server, es otra empresa, tiene una API de suscripción, por lo que no puedo dar la key ni nada que me ayude a solucionar problemas.

  • Consulta compleja de ajax de wolftwiglpha
  • llamar a una function en éxito de datatable ajax llamada
  • JS y problemas de concurrency?
  • ¿Es posible emular un iframe?
  • Axios spread () con un número desconocido de parameters de callback
  • Detecta cuando se abre cualquier cuadro de dialog jQuery
  • ¿Intenta usar jquery ajax pero no puede analizar JSON?
  • ¿La llamada jQuery ajax es compatible con PATCH?
  • 2 Solutions collect form web for “jquery .ajax () Solicitud GET enviando OPCIONES”

    Si el otro server es tuyo, puedes habilitar cors

    De lo contrario, no puede (en la mayoría de los casos *) realizar requestes a un dominio extranjero a través de ajax

    JavaScript y la progtwigción web ha crecido a pasos agigantados a lo largo de los años, pero la política del mismo origen aún permanece. Esto evita que JavaScript realice requestes a través de los límites del dominio, y ha generado varios hacks para realizar requestes entre dominios.

    CORS presenta un mecanismo estándar que todos los browseres pueden utilizar para implementar requestes entre dominios. La especificación define un set de encabezados que permiten que el browser y el server se comuniquen sobre qué requestes están (y no están) permitidas. CORS continúa el espíritu de la web abierta al brindar acceso API a todos.


    Una forma de eludir CORS es usar whateverorigin.org , aquí hay un ejemplo.

      $.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){ alert(data.contents); }); 

    La verificación previa (eso es lo que está sucediendo) para CORS se hace cuando

    • el método de request no es GET, HEAD o POST; o
    • Se utiliza un encabezado de request personalizado

    En su caso, su encabezado personalizado está activando la verificación previa

    Efectivamente, su request de CORS está siendo rechazada por el server. Según lo que haya publicado, necesita un encabezado personalizado en la request, por lo tanto, el server remoto debe gestionar las requestes de verificación previa para poder ofrecer resources de CORS.

    Es posible que el server que está tratando de usar no se haya configurado para permitir conexiones de cliente (browser), solo conexiones de "server" que no tengan restricciones cruzadas de origen.

    Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.