Tengo un comportamiento extraño con una solicitud particular de ajax en mi código. El código javascript que genera la solicitud es el siguiente:
$.ajax({ method: "GET", url: "https://YYY/ZZZ/", contentType: "application/json", cache: false, data: {}, username: "AAA", password: "BBB" })Esta solicitud falla con un error establecido en "error" (no se brindan detalles adicionales); no es un problema de CORS y el servidor no recibe ninguna solicitud. Usando el depurador de Firefox (en particular mirando la pestaña "Red"), solo puedo ver que la solicitud está bloqueada. Si miro la solicitud sin procesar, veo lo siguiente:
GET XXX undefined Host: YYY User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0 Accept: */* Accept-Language: it Accept-Encoding: gzip, deflate, br Content-Type: application/json Referer: http://localhost:10000/Puede notar que en lugar del campo HTTP/1.1 habitual en la solicitud GET, hay una extraña versión http "indefinida". No tengo ni idea de cómo es eso posible. Si vuelvo a enviar la solicitud usando el depurador de Firefox (seleccione la solicitud en la pestaña "Red", haga clic derecho sobre ella, elija "Reenviar"), la segunda solicitud aparece de la siguiente manera:
GET XXX HTTP/1.1 Host: YYY User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0 Accept: */* Accept-Language: it Accept-Encoding: gzip, deflate, br Referer: http://localhost:10000/ Content-Type: application/json Connection: keep-alive Sec-Fetch-Dest: empty Sec-Fetch-Mode: no-cors Sec-Fetch-Site: cross-site Pragma: no-cache Cache-Control: no-cacheAhora, la versión http es correctamente "HTTP/1.1" pero no debido a una modificación en el código, solo a una acción de reenvío usando la pestaña Red de las herramientas del desarrollador.
Además, si ejecuto el mismo código usando Chrome, la solicitud parece ser diferente nuevamente:
GET XXX HTTP/1.1 Host: YYY Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: it-IT,it;q=0.9,en;q=0.8,fr;q=0.7Estoy desarrollando en una máquina Linux Ubuntu, mi versión de Firefox es 95.0.1 (64 bits), mientras que mi versión de Chrome es 96.0.4664.110 (compilación oficial) (64 bits).
Mi apuesta es que el origen del problema se debe al hecho de que en la primera solicitud de Firefox, la versión http es "indefinida" en lugar de "HTTP/1.1", pero no he encontrado ninguna forma de forzar un valor diferente, y No entiendo qué causa tal error.
Gracias de antemano a quien pueda aportar alguna pista.