2

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

这没有任何问题,但是 Firefox 中流行的 NoScript 插件认为它是 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"));
})
4

2 回答 2

2

这不是代码修复,但我使用这个jQuery 表单插件来进行 ajax 上传。我已经安装了 Firefox 和 NoScript 测试了示例,一切运行良好。

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

于 2011-12-07T21:45:36.300 回答
0

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

于 2011-12-14T06:37:12.823 回答