Tengo un tablero que funciona enviando API a otras partes de mi servidor. Es un formulario html simple que se procesa con JavaScript para enviar una solicitud de búsqueda, y mi backend de matraz maneja la solicitud enviada para realizar la tarea con los datos proporcionados.
El problema es que cuando la solicitud se envía en el escritorio, funciona correctamente. Cuando lo envío en iPhone usando Google Chrome, la solicitud no se envía correctamente. En lugar de una solicitud 'POST', está enviando una solicitud 'OPCIONES'.
Los registros del servidor muestran: "OPCIONES /api/mensaje HTTP/1.1" frente a la versión de escritorio de "POST /api/mensaje HTTP/1.1"
Aquí está el código JavaScript:
const options = { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify( params ) }; fetch('https://myUrl.com/api/message', options ) .then( response => response.text() ) .then(response => { if (response == 'SUCCESS') { console.log(response) sessionStorage.setItem("success", "true"); window.location.reload() } else { sessionStorage.setItem("error", response) window.location.reload() } })Supongo que el navegador envía una solicitud de verificación previa .
El comportamiento diferente en el escritorio y el teléfono puede explicarse por algunas optimizaciones solo para teléfonos implementadas por el proveedor del navegador.
Está enviando una solicitud de verificación previa. Creo que esto se debe a que estaba usando HTTP en lugar de HTTPS y la solicitud se envía a HTTPS.