iframe文件上传和NoScript插件

时间:2011-12-03 13:27:13

标签: javascript noscript

我有一个带有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"));
})

2 个答案:

答案 0 :(得分:2)

这不是代码修复,但我使用此jQuery form plugin进行ajax上传。我已经安装了Firefox和NoScript来测试sample,一切运行正常。

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

答案 1 :(得分:0)

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