我有一个带有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"));
})
答案 0 :(得分:2)
这不是代码修复,但我使用此jQuery form plugin进行ajax上传。我已经安装了Firefox和NoScript来测试sample,一切运行正常。
如果您不想使用自定义插件,请查看source code,看看它是如何完成的。
答案 1 :(得分:0)
我建议您在<noscript>
显示一个简单的文件表单,因为脚本已经关闭,您无法通过使用更多脚本来解决问题。