问题如下:为了安全起见,程序开发中往往通过Session设置权限控制,只有登录用户才能进行上传。在IE下没问题,但是在Firefox等非IE内核浏览器下,运行报错“Http Error 302”。
经过搜索得知:因为 uploadify 或 SWFUpload 是靠Flash进行上传的。
(1)因为flash在执行post请求的时候没有包含cookie信息,而服务器的session会根据客户端的cookie来得到SESSIONID。没有提交cookie自然就不能获取到session,然后uploadify就返回了302(请求被重定向)的错误。
(2)Flash在IE下会把当前页面的Cookie发到Upload.ashx,但是Chrome、Firefox下则不会把当前页面的Cookie发到Upload.ashx。因为Session是靠Cookie中保存的SessionId实现的,这样由于当前页面的Cookie不会传递给Flash请求的Upload.ashx,因此请求的文件发送到Upload.ashx就是一个新的Session了,当然这个Session就是没有登录的了。
解决方案:那就是手动把SessionId传递给服务器,再服务器端读出SessionId再加载Session。