Данные файла POST с AJAX добавляют неизвестную jquery строку обратного вызова - PullRequest
0 голосов
/ 02 мая 2020

Я создаю веб-редактор файлов конфигурации, который позволяет пользователю редактировать настройки в текстовой области, преобразовывать содержимое в файл Blob, а затем отправлять данные в удаленный API. По какой-то причине он добавляет параметр случайного обратного вызова, и я понятия не имею, откуда он берется ...

http://ipaddr:8080/compile?callback=jQuery341029448751790349491588432312011&=1588432312012

Вот как выглядит код. Если кто-нибудь может указать мне правильное направление, я был бы очень признателен.

<script>
    $(document).ready(function() {

        $('#btnCompile').click(function(event) {

            // Convert TextArea contents to a Blob file
            var configText = $('#configuration').val();
            configText = configText.replace(/\n/g, "\r\n"); // retain line breaks

            var configFile = new Blob([configText], { type: "text/plain" });

            var documentData = new FormData();
            documentData.append('file', configFile, "configuration.cpp");

            $.ajax({
                url: "http://ipaddr:8080/compile",
                method: "POST",
                data: documentData,
                dataType: 'jsonp',
                crossDomain: true,
                cache: false,
                contentType: false,
                processData: false,
                success: function(data, textStatus, jqXHR)
                {
                    alert('success: ' + textStatus);
                },
                error: function(jqXHR, textStatus, errorThrown)
                {
                    alert('error status: ' + textStatus + ' error message: ' + errorThrown);
                }
            });
        });
    });

</script>

1 Ответ

1 голос
/ 02 мая 2020

Вы сказали dataType: 'jsonp', поэтому ваш запрос подчиняется ограничениям JSONP (включая запрос GET, помещение данных в строку запроса, добавление аргумента обратного вызова и невозможность установить пользовательский запрашивать заголовки).

Если вы этого не хотите (а все, что есть в вашем коде, указывает на это), не используйте JSONP. Это ужасный хак с угрозами безопасности, которые были заменены CORS за десятилетие go.

...