Intento obtener el progreso del servidor con su propia API. Cuando solo hago una solicitud de API simple, todos los navegadores (win y mac) funcionan bien. Pero mientras comenzaba el pesado proceso del servidor y esperaba la respuesta, la simple solicitud de API no funciona solo con Safari (MacOS e iOS). El otro navegador (win y mac) funciona bien.
[error de consola (solo 1 línea)]
XMLHttpRequest no puede cargar https://mydomain/api/WebJsOcrTest/ debido a comprobaciones de control de acceso.
Investigué el problema por el registro de errores en la web. Y supuse que la razón es causada por CORS al principio e intenté configurar el 'Acceso-Control-Permitir-Origin' en la respuesta de mi servidor, etc., pero no funcionó. Además, sin esperar la respuesta del servidor, la solicitud funciona bien. Así que creo que el CORS puede no ser la causa.
¿Configuro algo malo en mi código?
Agradezco cualquier ayuda y sugerencia para este problema.
Ambiente:
WinServer2016 IIS
Formularios web de ASP.net
jquery-3.6.0 (probado 2.2.4 pero igual)
macOS Big Sur 11.0.1 Safari 14.0.1
iOS 15.5 Safari 604.1
navegador probado:
Gana cromo, borde, FF
Mac Chrome, Safari, FF
Codigo del cliente:
<form id="form1" runat="server"> <div> <input id="btnSimpleAjax" type="button" value="BtnSimpleAjax"/> </div> <div> <asp:Button ID="ServerHeavyWork" runat="server" Text="ServerHeavyWork" OnClick="ServerHeavyWork_Click"/> </div> </form> <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> <script> $('#btnSimpleAjax').on('click', function () { $.ajax({ url: '/api/WebJsOcrTest/', type: 'POST', dataType: "json", timeout: 5000 }).done((data) => { alert(data) }).fail(function (jqXHR, textStatus, errorThrown) { console.log(jqXHR); console.log(textStatus); console.log(errorThrown); }); }); </script>