Esta pregunta se basa en un problema que tuve antes pero que nunca logré resolver.
Estoy ejecutando un script de usuario a través de FireMonkey que envía regularmente solicitudes a mi servidor backend, aquellos que usan CORS ya que son de dominio cruzado. Para fines de prueba, mis encabezados de respuesta actualmente están configurados de forma muy flexible en el lado del back-end:
header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Method: POST"); header("Access-Control-Allow-Headers: *"); En el lado frontal, mis solicitudes se envían a través de jQuery AJAX , y se ven más o menos así:
$.ajax({ method: "POST", url: this.queryURL, timeout: this.timeout, data: this.formData, processData: false, contentType: false, success: onSuccess, error: onError });Nada especial aquí, las solicitudes han funcionado bien desde entonces.
Quiero deshacerme de jQuery ahora y usar XmlHttpRequest nativo en su lugar. La implementación se ve así:
const xhr = new XMLHttpRequest(); xhr.open("POST", this.queryURL); xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.timeout = this.timeout; xhr.ontimeout = onTimeout; xhr.onreadystatechange = () => { if (xhr.readyState !== 4 || xhr.status === 0) return; if (xhr.status !== 200) onError(xhr); else onSuccess(xhr.responseText); }; xhr.send(this.formData);Por alguna razón, parece que las solicitudes ya no se envían en Firefox, al menos la pestaña de red no muestra ninguna. Al probarlo en Chrome todavía funciona, pero pensé que el problema podría tener algo que ver con las solicitudes de verificación previa, ya que noté algo extraño:
Con jQuery AJAX:
Con XHR nativo:
Al usar XHR nativo, parece que Chrome siempre tiene una primera solicitud de verificación previa que falla, y una segunda tiene éxito. Esto no sucede con AJAX . No estoy seguro de si esto es útil de alguna manera, pero ¿podría explicar por qué las solicitudes siguen fallando en Firefox y cómo resolverlo?
Después de investigar un poco más, finalmente descubrí que en realidad se trata de un problema relacionado con Firefox con los scripts de usuario: https://bugzilla.mozilla.org/show_bug.cgi?id=1715249