Iframe文件上传和NoScript插件

Iframe file uploading and NoScript plugin

本文关键字:NoScript 插件 文件 Iframe      更新时间:2023-09-26

我有一个ajax文件上传的表单。Javascript用表单创建iframe,将输入和文件一起移动到表单中,然后提交表单。

这工作没有任何问题,但流行的NoScript插件在Firefox中认为它是XSS和把我的POST请求变成GET。所以它不起作用。有没有可能绕开这个问题?

代码(使用jQuery)

function add_input_file(div) {
  var input = $("<input>").attr("type", "file").attr("name", "file");
  input.appendTo(div);
  input.change(function() {
    $(this).off();
    var iframe = $("<iframe>");
    iframe.appendTo($("body"));
    iframe.load(function() {
      $(this).off();
      var input = $(this).data("input");
      var form = $("<form>").attr("method", "post").attr("action", "/send").attr("enctype", "multipart/form-data").attr("accept-charset", "UTF-8");
      form.appendTo($(this).contents().find("body"));
      input.appendTo(form);
      add_input_file($("#att"));
      form.submit();
    });
  });
}
$(function() {
  add_input_file($("#att"));
})

这不是一个代码修复,但我使用这个jQuery表单插件做ajax上传。我在安装了Firefox和NoScript的情况下测试了这个示例,一切运行正常。

如果您不想使用自定义插件,请查看源代码,看看它是如何完成的。

我建议你在<noscript>上显示一个简单的文件表单,因为脚本已经关闭,你不能通过使用更多的脚本来解决问题。