POST 带有 AJAX 的文件数据附加了未知的 jquery 回调字符串

POST file data with AJAX is appending unknown jquery callback string

我正在构建一个配置文件 Web 编辑器,它允许用户在文本区域中编辑设置,将内容转换为 Blob 文件,然后 POST 将数据传输到远程 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>

您说的是 dataType: 'jsonp',因此您的请求受到 JSONP 的限制(包括作为 GET 请求、将​​数据放入查询字符串、添加回调参数以及无法设置自定义请求 headers).

如果您不想那样(并且您的代码的所有内容都表明您不想这样做),请不要使用 JSONP。这是一个可怕的黑客攻击,具有安全风险,已在十多年前被 CORS 取代。