Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

157
Views
La adición de encabezados a la solicitud ajax falla

Esto parecería ser muy sencillo, pero no puedo agregar encabezados HTTP adicionales a una solicitud que estoy tratando de hacer. Lo he visto a través de las herramientas de desarrollo del navegador, así como con BurpSuite. Estoy usando JSONP ya que esta es una llamada entre sitios, pero eso no debería importar. Estoy perplejo y buscando alguna orientación.

Necesito agregar un token/valor en el encabezado de la solicitud que estoy realizando desde una API Rest de terceros para la autenticación. He eliminado el código en una página de muestra con fines de depuración. Aquí está la muestra que estoy usando:

 <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> function getData() { $.ajax({ type: "GET", url: "https://<somesite>.com/<path>", accept: "application/json", dataType: "jsonp", crossDomain: true, beforeSend: function (xhr) { xhr.setRequestHeader("Accept", "application/json"); xhr.setRequestHeader("x-token","<token value>"); }, data: { select: "timeZoneId" }, success: function (data, status) { debugger; alert("Sucess"); }, error: function (xhr, status, error) { debugger; alert("Error! :" + xhr.status); } }); } </script> </head> <body> <button type="button" onclick="getData()">Submit</button> </body> </html>

He pasado por todo tipo de contorsiones al agregar el token x como encabezado, pero nunca se agrega a la solicitud, por lo que puedo ver. El resultado de la solicitud siempre es un error no autorizado 401, que es el error esperado si se pasa un token x no válido o faltante. Como mencioné, una inspección de los encabezados no muestra el token x.

Los encabezados que veo son:

 GET /redzone/public/bi/v_completeddataitem?callback=jQuery36009809687059838048_1648150351509&select=timeZoneId&_=1648150351510 HTTP/2 Host: <somesite>.com Cookie: AWSALBCORS=f+1AWICQyRddSBjj6CNFH6f6XAnVjPOqAMq1JcPj9CCN1x1Izv1cFFXFKo7IKop53Lw4Y95mWWRjzHRAtOwTGccbwbvS8DBCDxJZY8WA9dEwu2Z/XKPeiSV+rAsb Sec-Ch-Ua: "(Not(A:Brand";v="8", "Chromium";v="99" Sec-Ch-Ua-Mobile: ?0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Sec-Ch-Ua-Platform: "Windows" Accept: */* Sec-Fetch-Site: cross-site Sec-Fetch-Mode: no-cors Sec-Fetch-Dest: script Referer: http://localhost/ Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9

Gracias de antemano por cualquier sugerencia.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

JSONP funciona inyectando un elemento <script> con un atributo src .

No hay forma de establecer encabezados de solicitud en un elemento <script> .

Esta es una de las muchas limitaciones de JSONP.

Use XMLHttpRequest o busque para solicitar JSON con CORS en su lugar.


Uno de los encabezados que está configurando es Accept: application/json , que no tiene sentido, ya que el único formato de datos que puede analizar con JSONP es JSONP (que es un subconjunto de text/javascript ).

Tengo la corazonada de que el problema es que el tercero no admite solicitudes de origen cruzado y está tratando de solucionarlo utilizando JSONP. Eso no funcionará ya que JSONP requiere que admitan explícitamente JSONP (al igual que una solicitud de origen cruzado moderna requiere que admitan explícitamente CORS).

Si el tercero no admite solicitudes de origen cruzado, debe realizar la solicitud desde un lugar que no sea el navegador. por ejemplo, proxy a través de su propio servidor.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!