使用Flash上传控件上传文件,一般都要知道是谁(标志用户的session或cookie等)上传的文件,放什么地方,因此需要获取已登录的用户身份信息,增强安全性,避免攻击。
以java型应用为例,一般请求和响应都会携带有名为JSESSIONID的cookie。开发时发现,在IE和chrome下面,上传文件时,请求头都会携带JSESSIONID,但是Firefox下面则不会携带JSESSIONID(其它cookie也不携带)。
搜索发现原因如下(未验证准确性):
IE浏览器下ActiveX模式下的Flash插件使用的是IE的链接池,所以获取的Session和Cookie是一致的,而在Firefox下的是Plugin模式,使用自有的链接,没有使用FF的链接池,所以FF下便产生了两个不同的链接,所以Session和Cookie找不到了。(Chrome呢?)
解决方案是将标志用户的JSESSIONID传递给Flash,然后上传。
参考这篇文章:
http://hi.baidu.com/suofang/item/cbe56cda1bd42c3f48e1dd11
http://stackoverflow.com/questions/2233627/swfupload-works-in-ie-but-not-in-firefox