SWFUpload在Chrome、Firefox浏览器下session找不到的问题
来源:互联网 发布:苹果电脑office软件 编辑:程序博客网 时间:2024/05/22 01:51
SWFUpload是一个非常不错的异步上传组件,但是在Chrome、Firefox等浏览器下使用的时候会有问题。问题如下:为了防止跳过上传页面直 接向“接受SWFUpload上传的一般处理程序”(假如是Upload.ashx)发送请求造成WebShell漏洞,我的系统中对于 Upload.ashx进行了权限控制,只有登录用户才能进行上传。在IE下没问题,但是在Chrome下运行报错“用户未登录”。
经过搜索得知:因为SWFUpload是靠Flash进行上传的,Flash在IE下会把当前页面的Cookie发到Upload.ashx,但是Chrome、Firefox下则不会把当前页面的Cookie发到Upload.ashx。因为Session是靠Cookie中保存的SessionId实现的,这样由于当前页面的Cookie不会传递给Flash请求的Upload.ashx,因此请求的文件发送到Upload.ashx就是一个新的Session了,当然这个Session就是没有登录的了。
解决这个问题的思路也很简单,那就是手动把SessionId传递给服务器,再服务器端读出SessionId再加载Session。其实解决问题的办法 SWFUpload的Demo中已经给出了,那就是在SWFUpload的构造函数中设置post_params参数:
原理:当用户请求到达ASP.Net引擎的时候Application_BeginRequest方法首先被调用,在方法中看客户端是否提交上来了ASPSESSID,如果有的话则把ASPSESSID的值写入Cookie(以"ASP.NET_SESSIONID"为Key,因为ASP.Net中SessionId就是保存在"ASP.NET_SESSIONID"为Key的Cookie中的),Application_BeginRequest方法后就可以从Cookie中读取到"ASP.NET_SESSIONID"的值还原出页面的Session了。
如果网站中还用到了Membership的FormsAuthentication验证,则还需要把AUTHID也按照SessionID的方法进行处理,这一点是其他讲到SWFUpload这个Bug处理的文章中没有提到的。
在SWFUpload的构造函数中设置post_params参数:
- SWFUpload在Chrome、Firefox浏览器下session找不到的问题
- SWFUpload在Chrome、Firefox浏览器下session找不到的问题
- 解决SWFUpload在Chrome、Firefox浏览器下session找不到的问题
- 解决SWFUpload在Chrome、Firefox浏览器下session找不到的问题
- (转)解决SWFUpload在Chrome、Firefox等浏览器下的问题
- 总算解决了swfupload在非IE(chrome firefox opera)统统不能用的问题
- 解决使用FireFox下Flash上传文件时SESSION丢失的问题(swfupload)
- 关于 SWFUpload 在firefox (ff,火狐)下,报错 302,session,cookie
- 解决uploadify在Firefox下丢失session的问题
- 关于uploadify在Firefox下session丢失的问题
- 关于fckeditor 在 firefox 浏览器下 字体的问题
- FIREFOX和CHROME浏览器下PercentLoaded()不能使用的解决方案
- FIREFOX和CHROME浏览器下PercentLoaded()不能使用的解决方案
- Linux下Firefox和chrome浏览器flash插件的安装
- Chrome/FireFox浏览器下处理JSON的插件
- selenium的截图功能只能在浏览器“*Chrome”、“*Firefox”
- scrollTop在FireFox与Chrome浏览器间的兼容问题
- 解决Firefox和Chrome浏览器的英文字符换行问题
- DevExpress.XtraGrid InitNewRow经典 .
- net程序系统中有时需要对文本框的输入做一些限定,比如禁用粘贴功能
- hdu 1712 ACboy needs your help
- Gibbs sampling
- 浮点数转换成二进制数
- SWFUpload在Chrome、Firefox浏览器下session找不到的问题
- jsp中include html中文乱码问题
- 第一课:GPIO操作——LED & 按键
- pl/sql 不能对存储过程进行单步调试的问题解决方法
- JS设置页面按钮可用不可用
- ios获取文件的路径,创建文件
- struts2的输入校验框架及DTD文件配置
- Java 编程中关于异常处理的 10 个最佳实践
- tomcat配置连接池