La solicitud de AJAX falla al enviar FormData (), incluida la entrada de archivos vacíos en Safari 10.13.4

Estoy ejecutando una aplicación web basada en Symfony 2.8 que envía algunos datos de formulario a un controlador usando Ajax.

Hasta ahora todo funcionó bien, pero desde que la última actualización de macOS a la versión 10.13.4 los usuarios comienzan a informar, el envío del formulario ya no funciona en Safari. Otras versiones de macOS y otros navegadores en 10.13.4 todavía funcionan bien, por lo que parece ser un problema en Safari. Por supuesto, presenté un informe de error a Apple, pero no creo que alguna vez reciba comentarios de allí ...

Pude aislar la fuente del problema: el envío de datos que incluye una entrada de archivo vacía falla:

// safri_bug.html
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    </head>
<body>
    <form name="app_booking" method="post" action="/test/submit.php">
        <div><input type="text" id="someValue" name="value"></div>
        <div><input id="thefile" type="file" name="file"></div>
    </form>

    <button id="bSubmit" type="button">Submit</button>

    <script>    
        $(document).ready(function() {              
            $('#bSubmit').click(function() {
                var form = $('form');
                var data = new FormData(form[0]);

                $.ajax({
                    url : '/submit.php',
                    type : 'POST',
                    data : data,
                    contentType: false,
                    processData: false,
                    context : this,
                    success : function(response) {
                            alert('success: ' + response);
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                            alert('error: ' + xhr.responseText + ' - ' + thrownError);
                    }
                });
            });
        });
    </script>
</body>
</html>


// submit.php
<?php 
    echo "OK";

Resultado

Enviar el formulario funciona bien en todos los navegadores y plataformas probados, pero en Safari en macOS 10.13.4En Safari en macOS 10.13.4:Si no se selecciona el archivo: la solicitud de Ajax se ejecuta durante aproximadamente 20 segundos (¿tiempo de espera de construcción?) Y luego regresa con una respuesta de éxito vacía. lossubmit.php haceNO ser llamadoSi se seleccionó un archivo: todo funciona bien ...

Entonces, ¿esto parece ser un error en la última actualización de Safari? ¿O hay algo mal con mi código?

¿Alguna idea de cómo prevenir este error?

Respuestas a la pregunta(5)

Su respuesta a la pregunta