Java Firefox的swfupload中的上载错误403

Java Firefox的swfupload中的上载错误403,java,tomcat,swfupload,Java,Tomcat,Swfupload,我尝试使用swfuploder上传文件,它在IE中运行良好,但在Firefox中出现“UploadError403”。我使用的是apache-tomcat-6.0.16,无法访问.htaccess文件 这是我用于swfupload的代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <

我尝试使用swfuploder上传文件,它在IE中运行良好,但在Firefox中出现“UploadError403”。我使用的是apache-tomcat-6.0.16,无法访问
.htaccess
文件

这是我用于swfupload的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>SWFUpload Demos - Simple Demo</title>
        <link href="../css/default.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="../js/swfupload/demos/swfupload/swfupload.js"></script>
        <script type="text/javascript" src="../js/swfupload/demos/simpledemo/js/swfupload.queue.js"></script>
        <script type="text/javascript" src="../js/swfupload/demos/simpledemo/js/fileprogress.js"></script>
        <script type="text/javascript" src="../js/swfupload/demos/simpledemo/js/handlers.js"></script>
        <script type="text/javascript">
            var swfu;
            window.onload = function() {
                var settings = {
                    flash_url : "../js/swfupload/demos/swfupload/swfupload.swf",
                    upload_url: "upload_pages/uploader.jsp",
                    post_params: {"PHPSESSID" : ""},
                    file_size_limit : "100 MB",
                    file_types : "*.*",
                    file_types_description : "All Files",
                    file_upload_limit : 100,
                    file_queue_limit : 0,
                    custom_settings : {
                        progressTarget : "fsUploadProgress",
                        cancelButtonId : "btnCancel"
                    },
                    debug: true,
                    prevent_swf_caching: true,

                    // Button settings
                    button_image_url: "../js/swfupload/demos/simpledemo/images/TestImageNoText_65x29.png",
                    button_width: "65",
                    button_height: "29",
                    button_placeholder_id: "spanButtonPlaceHolder",
                    button_text: '<span class="theFont">Upload</span>',
                    button_text_style: ".theFont { font-size: 16; }",
                    button_text_left_padding: 12,
                    button_text_top_padding: 3,

                    // The event handler functions are defined in handlers.js
                    file_queued_handler : fileQueued,
                    file_queue_error_handler : fileQueueError,
                    file_dialog_complete_handler : fileDialogComplete,
                    upload_start_handler : uploadStart,
                    upload_progress_handler : uploadProgress,
                    upload_error_handler : uploadError,
                    upload_success_handler : uploadSuccess,
                    upload_complete_handler : uploadComplete,
                    queue_complete_handler : queueComplete
                };

                swfu = new SWFUpload(settings);
            };
        </script>
    </head>
    <body>
        <div id="content">
            <h2>File Upload</h2>
            <form id="form1" method="post" enctype="multipart/form-data">
                <div class="fieldset flash" id="fsUploadProgress">
                    <span class="legend">Upload Queue</span>
                </div>
                <div id="divStatus">0 Files Uploaded</div>
                <div>
                    <span id="spanButtonPlaceHolder"></span>
                    <input id="btnCancel" type="button" value="Cancel All Uploads" onclick="swfu.cancelQueue();" disabled="disabled" style="margin-left: 2px; font-size: 8pt; height: 29px;" />
                </div>
            </form>
        </div>
    </body>
</html>

SWFUpload演示-简单演示
var-swfu;
window.onload=函数(){
变量设置={
flash_url:“../js/swfupload/demos/swfupload/swfupload.swf”,
上传url:“上传页面/uploader.jsp”,
post_参数:{“PHPSESSID”:“},
文件大小限制:“100MB”,
文件类型:“***”,
文件类型描述:“所有文件”,
文件上传限制:100,
文件队列限制:0,
自定义\u设置:{
progressTarget:“fsUploadProgress”,
取消按钮NID:“取消”
},
是的,
阻止\u swf\u缓存:true,
//按钮设置
按钮图片url:“../js/swfupload/demos/simpledemo/images/TestImageNoText_65x29.png”,
按钮宽度:“65”,
按钮高度:“29”,
按钮\u占位符\u id:“spanButtonPlaceHolder”,
按钮_文本:“上传”,
按钮文本样式:“.theFont{font size:16;}”,
按钮\文本\左\填充:12,
按钮\文本\顶部\填充:3,
//事件处理程序函数在handlers.js中定义
文件队列处理程序:文件队列,
文件队列错误处理程序:fileQueueError,
文件对话框完成处理程序:文件对话框完成,
上载\u开始\u处理程序:上载开始,
上传进度处理程序:上传进度,
上载错误\u处理程序:上载错误,
上载成功\u处理程序:上载成功,
上载完成\u处理程序:上载完成,
队列\u完成\u处理程序:队列完成
};
swfu=新的SWFUpload(设置);
};
文件上传
上载队列
已上载0个文件

我尝试了“上传url”的绝对url和相对url,但出现了相同的错误“上传错误403”。但它适用于IE。

HTTP状态代码403的意思。这是一个身份验证错误。请求需要经过身份验证的用户(登录用户),但该用户不在会话中,或者找不到关联的会话

我从未使用过SWFUpload,但它似乎没有将
jsessionid
cookie与请求一起传递给服务器端,因此服务器端无法识别客户端。谷歌“还发现,你不是唯一一个遇到这个问题的人。要解决此问题,您需要将
jsessionid
附加到设置中的URL:

upload_url: "upload_pages/uploader.jsp;jsessionid=${pageContext.session.id}",
也就是说,下面这句话

post_params: {"PHPSESSID" : ""},

看起来也很可疑。空的PHP会话ID在JSP/Servlet环境中做什么?当你复制粘贴别人的代码时,你不是忽略了/忘记了这一点吗?

我有一个类似的问题,但是在apache/PHP中。所以我在这里链接一个可能的解决方案

从我目前发现的情况来看,在安装了安全扩展(即会话保护/加密)的服务器上,会话身份验证似乎存在安全问题,这使得服务器认为html页面和swf uploader是不同的用户,从而导致403错误

同时检查mod_安全性是否被禁用,并尝试添加这些.htaccess设置,这似乎对某些人有效

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

最后,firefox可能是一个cookie bug,我正在尝试中给出的简单上传演示示例。。嗯,post_params:{“PHPSESSID”:“},在这里什么也不做。此代码适用于IE。。我已经将jsessionid附加到URL中,但仍然出现相同的错误403。
SetEnvIfNoCase Content-Type “^multipart/form-data;” “MODSEC_NOPOSTBUFFERING=Do not buffer file uploads”