Ci框架下使用uploadify造成session丢失

合集下载

iframe session 丢失解决的方法

iframe session 丢失解决的方法

iframe session 丢失解决的方法iframe中的session丢失是一个常见的问题,尤其在跨域使用iframe时。

下面是一些解决该问题的方法:1. 使用cookieless="true":在中,将sessionState元素的cookieless属性设置为"true"。

这样,将不会使用cookie来存储session ID,而是将session ID存储在URL中。

2. 使用代替Session:当在iframe中访问session时,可以使用代替Session来获取session对象。

例如,将代码`Session["Username"]`改为`["Username"]`。

3. 配置CORS:如果iframe和主页面来自不同的域,需要配置CORS(跨源资源共享)来允许跨域请求。

在中,可以通过设置响应头来实现CORS。

例如,添加以下代码到:```xml<httpProtocol><customHeaders><add name="Access-Control-Allow-Origin" value="" /><add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" /><add name="Access-Control-Allow-Headers" value="Content-Type" /></customHeaders></httpProtocol>```4. 禁用浏览器安全机制:某些浏览器安全机制可能会阻止跨域请求,导致iframe中的session丢失。

Asp.net网站Session丢失,会话过期,Cookie过期的原因及解决方案

Asp.net网站Session丢失,会话过期,Cookie过期的原因及解决方案

网站Session 丢失,会话过期,Cookie 过期的原因及解决方案 2010/7/12 网站 Session 丢失,会话过期,Cookie 过期 的原因及解决方案有朋友问: 我开发的 站点在本地运行时 很正常,可是发布到了生产环境之后,不能正常运行,经常出错,检查原因时发现是因为 Session 和Cookie 经常无缘无故丢失。

从表面上看这是个比较奇怪的问题,难道生产环境和本地环境有什么不同吗?答案是: 确实有点不一样。

中的 cookie 和 session 都是要加密的,而加密时要用到MachineKey , 如果你的 的web.config 中没有加上 MachineKey ,当然你发布到生产环境之后就会遇到上面的问题,加上 MachineKey 配置项就不会出错了。

MachineKey 的配置如下:<system.web> <machineKeyvalidationKey="A40C4D37C52C1ACCC5C7B9224274DDB3E5C4D1618B4509C7"decryptionKey="6053A3FE59AC5E83163D09D6E36CFC8FFEBE81E67EE55122" validation="SHA1" /></system.web>12 3 在 这样的Web 应用中,Session 是用来保存用户状态的常用手段,不过由于服务器内存空间是有限的,所以Session 过期时间设置是很有必要的。

在 中如何设置Session 的过期时间呢,很简单,修改web.config 配4 5 6 7 置。

具体修改方法如下,在web.config 中进行如下配置 <system.web><sessionState mode="InProc" timeout="30"/></system.web>在这里指的是Session 过期时间为30分钟。

ASP.NET Session丢失问题原因及解决方案

ASP.NET Session丢失问题原因及解决方案

Session丢失问题原因及解决方案本文分析了 Session丢失问题的原因及解决方案。

asp的Session是具有进程依赖性的。

ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。

正常操作情况下会有 Session丢失的情况出现。

因为程序是在不停的被操作,排除Session超时的可能。

另外,Session超时时间被设定成60分钟,不会这么快就超时的。

现在我就把原因和解决办法写出来。

Session丢失原因:由于程序是默认配置,所以Web.Config文件中关于Session的设定如下:< sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes'cookieless='true' timeout='60'/>我们会发现sessionState标签中有个属性mode,它可以有3种取值:InProc、StateServer?SQLServer(大小写敏感)。

默认情况下是InProc,也就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),这个进程不稳定,在某些事件发生时,进程会重起,所以造成了存储在该进程内的Session丢失。

哪些情况下该进程会重起呢?微软的一篇文章告诉了我们:1、配置文件中processModel标签的memoryLimit属性2、Global.asax或者Web.config文件被更改3、Bin文件夹中的Web程序(DLL)被修改4、杀毒软件扫描了一些.config文件。

更多的信息请参考PRB: Session variables are lost intermittently in applications Session丢失解决办法:前面说到的sessionState标签中mode属性可以有三个取值,除了InProc之外,还可以为StateServer、SQLServer。

Session失效的原因汇总及解决丢失办法

Session失效的原因汇总及解决丢失办法

Session失效的原因汇总及解决丢失办法昨天去GTSC⾯试,有⾯试官问我关于Session丢失之后怎么查的问题,说⽼实话,开发到现在很少碰到这样的情况,唯⼀想到的就是Session超时,还有就是做Session读写⽇志,发觉⾯试官听了之后不是很满意,汗!不管怎么说,是个学习的好机会,今天抽空查了⼀下⽹上关于这些问题的处理⽅法,总结⼀下,希望对⼤家有所帮助。

顺便提⼀下asp中Session的⼯作原理:asp的Session是具有进程依赖性的。

ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。

所以当inetinfo.exe进程崩溃时,这些信息也就丢失。

另外,重起或者关闭IIS服务都会造成信息的丢失。

Session的实现的Session是基于HttpModule技术做的,HttpModule可以在请求被处理之前,对请求进⾏状态控制,由于Session本⾝就是⽤来做状态维护的,因此⽤HttpModule做Session是再合适不过了。

原因1:bin⽬录中的⽂件被改写,有⼀种机制,为了保证dll重新编译之后,系统正常运⾏,它会重新启动⼀次⽹站进程,这时就会导致Session丢失,所以如果有access数据库位于bin⽬录,或者有其他⽂件被系统改写,就会导致Session丢失原因2:⽂件夹选项中,如果没有打开“在单独的进程中打开⽂件夹窗⼝”,⼀旦新建⼀个窗⼝,系统可能认为是新的Session会话,⽽⽆法访问原来的Session,所以需要打开该选项,否则会导致Session丢失参考配置:原因3:似乎⼤部分的Session丢失是客户端引起的,所以要从客户端下⼿,看看cookie有没有打开原因4:Session的时间设置是不是有问题,会不会因为超时造成丢失原因5:IE中的cookie数量限制(每个域20个cookie)可能导致session丢失原因6:使⽤web garden模式,且使⽤了InProc mode作为保存session的⽅式解决丢失的经验1. 判断是不是原因1造成的,可以在每次刷新页⾯的时候,跟踪bin中某个⽂件的修改时间2. 做Session读写⽇志,每次读写Session都要记录下来,并且要记录SessionID、Session值、所在页⾯、当前函数、函数中的第⼏次Session操作,这样找丢失的原因会⽅便很多3. 如果允许的话,建议使⽤state server或sql server保存session,这样不容易丢失4. 在global.asa中加⼊代码记录Session的创建时间和结束时间,超时造成的Session丢失是可以在SessionEnd中记录下来的。

3.2版uploadify详细例子(含FF和IESESSION问题)

3.2版uploadify详细例子(含FF和IESESSION问题)

3.2版uploadify详细例⼦(含FF和IESESSION问题)最近做项⽬中碰到上传需要显⽰进度的问题,通过uploadfiy很好的解决了这个问题不过(IE9出现了按钮不能点击的问题,⾄今仍找不到良策)在使⽤uploadfiy3.2版本时需要下载$("#uploadify").uploadify({'uploader': '/LZKS/Handler/BigFileUpLoadHandler.ashx','swf': '/LZKS/Scripts/uploadify/uploadify.swf','cancelImage': '/LZKS/Scripts/uploadify/cancel.png','queueID': 'fileQueue',//'auto': false,'multi': true,'buttonText': '⽂件上传','formData': { 'ASPSESSID': ASPSESSID, 'AUTHID': auth },'onSelect': function (file) {$('#uploadify').uploadifySettings('formData', { 'ASPSESSID': ASPSESSID, 'AUTHID': auth });alert(formDate);},'onComplete': function (file, data, response) {},'onQueueComplete': function () {alert("上传完成!");$('#fileQueue').attr('style', 'visibility :hidden');},'onSelectError': function (file, errorCode, errorMsg) {$('#fileQueue').attr('style', 'visibility :hidden');},'onUploadStart': function (file) {$('#fileQueue').attr('style', 'top:200px;left:400px;width:400px;height :400px;visibility :visible');}});});⽤uplodify上传还有⼀个⼩问题就是在FF下session将会出现丢失的情况,在Gobal中加⼊如下代码来将上传过程中定义的session传⾄服务器上protected void Application_BeginRequest(object sender, EventArgs e){/* we guess at this point session is not already retrieved by application so we recreate cookie with the session id... */try{string session_param_name = "ASPSESSID";string session_cookie_name = "_SessionId";if (HttpContext.Current.Request.Form[session_param_name] != null){UpdateCookie(session_cookie_name, HttpContext.Current.Request.Form[session_param_name]);}else if (HttpContext.Current.Request.QueryString[session_param_name] != null){UpdateCookie(session_cookie_name, HttpContext.Current.Request.QueryString[session_param_name]);}}catch{}try{string auth_param_name = "AUTHID";string auth_cookie_name = FormsAuthentication.FormsCookieName;if (HttpContext.Current.Request.Form[auth_param_name] != null){UpdateCookie(auth_cookie_name, HttpContext.Current.Request.Form[auth_param_name]);}else if (HttpContext.Current.Request.QueryString[auth_param_name] != null){UpdateCookie(auth_cookie_name, HttpContext.Current.Request.QueryString[auth_param_name]);}}catch{}}private void UpdateCookie(string cookie_name, string cookie_value){HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name);if (null == cookie){cookie = new HttpCookie(cookie_name);}cookie.Value = cookie_value;HttpContext.Current.Request.Cookies.Set(cookie);}在JS加载前⾯定义下⾯两个变量var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>"; var ASPSESSID = "<%= Session.SessionID %>";Handler⽂件代码如下:public class BigFileUpLoadHandler : IHttpHandler, IRequiresSessionState{DALFile Fdal = new DALFile();public void ProcessRequest(HttpContext context){context.Response.ContentType = "text/plain";VideoUpLoad(context, .Globe.filename);}public void VideoUpLoad(HttpContext context, string fileFolderName){context.Response.Charset = "utf-8";string aaaaaaa=context.Request.QueryString["sessionid"];HttpPostedFile file = context.Request.Files["Filedata"];string uploadPath = HttpContext.Current.Server.MapPath(UploadFileCommon.CreateDir(fileFolderName));if (file != null){if (!Directory.Exists(uploadPath)){Directory.CreateDirectory(uploadPath);}Model.ModelFile model = new Model.ModelFile();model.File_ID = Guid.NewGuid().ToString();model.File_Name = file.FileName;model.File_Path = UploadFileCommon.CreateDir(fileFolderName);model.File_Size = file.ContentLength;model.File_Extension = file.FileName.Substring(stIndexOf('.') + 1);model.File_Date = DateTime.Now;model.File_CurrentMan = ;file.SaveAs(uploadPath + model.File_Name);List<Model.ModelFile> list = null;if (context.Session["File"] == null){list = new List<Model.ModelFile>();}else{list = context.Session["File"] as List<Model.ModelFile>;}list.Add(model);context.Session.Add("File", list);}else{context.Response.Write("0");}}//这段代码的功能是将多⽂件的信息存到context.Session["File"] as List<Model.ModelFileModel.ModelFile>为⽂件信息类//实现批量上传的信息给Session。

session失效的几种方法

session失效的几种方法

session失效的几种方法随着互联网的快速发展,越来越多的应用程序开始采用session来保存用户的状态信息。

然而,session失效是一个常见的问题,它可能会导致用户的信息丢失,给用户带来不好的体验。

本文将介绍session失效的几种方法,并提出一些解决方案。

一、session超时session的超时是指session在一定时间内没有活动就会自动失效。

这个时间可以通过服务器配置文件中的session.timeout参数进行设置。

一旦超过了这个时间,session就会自动失效。

这种情况通常是由于用户长时间不进行操作导致的,比如长时间没有点击或者提交表单等。

解决方法:1. 增加session的超时时间:可以通过修改服务器配置文件来增加session的超时时间,使得用户可以有更长时间来进行操作。

2. 提示用户:当用户的session即将失效时,可以通过弹窗或者提醒条等方式来提醒用户及时操作,从而避免session的失效。

二、服务器重启服务器在进行内存清理、系统维护、升级等操作时会导致session的失效。

这种情况通常是由服务器端的操作导致的,当服务器重启后,session会被清空,用户的状态信息也会丢失。

解决方法:1. 集裙部署:可以采用集裙部署的方式来避免单点故障,当一个服务器重启时,其他服务器可以继续提供服务,从而避免影响用户。

2. 定时备份:可以采用定时备份session的方式,将用户的状态信息保存到数据库中或者文件中,当服务器重启后可以将备份的session 信息还原,从而避免用户的信息丢失。

三、浏览器限制浏览器的限制也会导致session的失效,比如用户关闭浏览器、清除cookie、切换浏览器等操作都会导致session的失效。

这种情况通常是由于用户端的操作导致的,当用户进行了以上操作后,session就会失效。

解决方法:1. 使用cookie:可以将session的标识符保存到cookie中,当用户关闭浏览器后再次打开时,可以通过cookie来重新获取session,从而避免session的失效。

iframe跨域访问cookie和session的解决方法

iframe跨域访问cookie和session的解决方法

iframe跨域访问cookie和session的解决方法一、问题背景介绍随着互联网技术的不断发展,前端页面中的IFrame变得越来越普遍。

然而,IFrame在跨域访问时,会遇到Cookie和Session无法传递的问题。

这个问题在一定程度上限制了网页的功能和用户体验。

为了解决这个问题,本文将介绍几种常见的解决方法。

二、IFrame跨域访问原理IFrame本质上是一个浏览器窗口,它与其他域的页面进行交互时,会受到同源策略的限制。

同源策略是指浏览器为了保护用户信息安全,限制来自不同源的页面之间的交互。

在这种情况下,Cookie和Session无法跨域传递,从而导致了一系列问题。

三、解决方案1.服务端设置Cookie和Session为了解决跨域问题,可以在服务端设置Cookie和Session。

当用户访问某个页面时,服务器会为其分配一个唯一的Session ID。

然后将这个Session ID存储在Cookie中,以便下次访问时使用。

这样,即使用户通过IFrame访问其他域的页面,也可以保证Session的连续性。

2.使用JSONP技术JSONP(JSON with Padding)是一种跨域通信的技术。

它通过在HTML 标签中插入一个script标签,来实现跨域数据传输。

JSONP的优势在于它不需要修改服务器端的代码,只需在客户端修改即可。

但是,JSONP只支持GET请求,不支持POST请求。

3.使用代理服务器代理服务器是一种在客户端和服务器之间进行数据传输的中间服务器。

通过使用代理服务器,可以绕过浏览器的同源策略,实现跨域访问。

在服务器端,可以将Cookie和Session存储在代理服务器上,然后在客户端通过Ajax 请求获取数据。

4.使用Ajax进行跨域通信Ajax(Asynchronous JavaScript and XML)是一种异步的Web开发技术。

通过Ajax,可以实现在不刷新页面的情况下,与服务器进行数据交互。

关于Session过期问题及其解决办法

关于Session过期问题及其解决办法

关于Session过期问题及其解决办法1.⽬录删除及重命名操作 :如果你发现session突然⽆理由的丢失,⽽当你认真的检查代码并且排除其它常规可能丢失的可能性时,你可能会像我⼀样,⼏乎要接近崩溃~!后来发现问题出在我⽤代码创建⼀个临时⽬录然后删除临时⽬录的删除操作上。

现在和⼤家分享下:希望对碰到类似钉⼦的朋友有⽤。

说⽩了session丢失实质就是:应⽤程序重起!应⽤程序什么时候⾃动重起呢?请参考:也就是说 会监视应⽤程序⽬录,⼀但有被监视的动作发⽣(⽐如:修改了config、重命名⽬录等)应⽤程序就会⾃动重起当然这时你的session⼀定丢失了。

如果避免不了这种操作(如:重命名⽬录);这⾥我们可以⽤cookie存信息或存到数据库去;注意:除了以上列出的英⽂条件外。

⽬录的删除操作⼀定丢失session。

的内部机制对待⽬录有点像个守财奴,它死守着⽬录,你创建它不会管(往⾥加),⼀但创建他就会监视该⽬录,若你要删除或重命名它的(动它的⽬录),它就发⽣重起了。

2.Frame中关于Session丢失在开发中,我们经常会遇到使⽤Frame来⼯作,⽽且有时是为了跟其他⽹站集成,应⽤到多域的情况下,⽽Iframe是不能保存Session的。

因此,⽹上可以找到很多相关的⽂章,如果⽹站可以采⽤设置Web.Config中的配置:<sessionStatemode="StateServer"stateConnectionString="tcpip=127.0.0.1:42424"sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"cookieless="false"timeout="40"/>把cookieless="false"改成"true"就可以了。

Session丢失问题解决方法一

Session丢失问题解决方法一

Session丢失问题解决⽅法⼀Session丢失已经是⼀种习以为常的问题了,在⾃⼰也了解⼀些如何解决的问题,但是也⼀直没有机会去⽤,现在由于新的项⽬要在B/S下开发,所以不得不让我考虑Session的问题。

解决session丢失的问题有两种⽅法:1)将session保存在⼀台sate server中。

2)将session保存在sql server中。

我们使⽤的数据库是oracle,不想再装⼀个数据库,所以⽤了第⼀种⽅法。

⾸先根据⽹上查的资料对webconfig⽂件中session部分进⾏修改。

如下:<sessionStatemode="StateServer"cookieless="false"timeout="240"stateConnectionString="tcpip=10.164.222.122:42424"stateNetworkTimeout="14400"/><machineKeyvalidationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4"decryptionKey="5FC88DFC24EA123C"validation="SHA1"/>然后再在10.164.222.122 这台电脑上的 state server 服务启动这样基本上就⾏了。

体验⼀下。

我⽤了⼀个测试程序,在3个⼩时以后session仍然可⽤,更绝的是我的电脑都重起了,在其它电脑上打开的⽹页()中session仍然可⽤。

⼀番体验以后,感觉还真不错。

.NET Framework 常规参考<sessionState> 元素为当前应⽤程序配置会话状态设置。

Session过期问题及其解决办法

Session过期问题及其解决办法

1.目录删除及重命名操作 :如果你发现session突然无理由的丢失,而当你认真的检查代码并且排除其它常规可能丢失的可能性时,你可能会像我一样,几乎要接近崩溃~!后来发现问题出在我用代码创建一个临时目录然后删除临时目录的删除操作上。

现在和大家分享下:希望对碰到类似钉子的朋友有用。

说白了session丢失实质就是:应用程序重起!应用程序什么时候自动重起呢?请参考:Anand在发表的文章也就是说 会监视应用程序目录,一但有被监视的动作发生(比如:修改了config、重命名目录等)应用程序就会自动重起当然这时你的session一定丢失了。

如果避免不了这种操作(如:重命名目录);这里我们可以用cookie存信息或存到数据库去;注意:除了以上列出的英文条件外。

目录的删除操作一定丢失session。

的内部机制对待目录有点像个守财奴,它死守着目录,你创建它不会管(往里加),一但创建他就会监视该目录,若你要删除或重命名它的(动它的目录),它就发生重起了。

2.Frame中关于Session丢失在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。

因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:<sessionState mode="StateServer"stateConnectionString="tcpip=127.0.0.1:42424"sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false"timeout="40"/>把cookieless="false"改成"true"就可以了。

iframe跨域session丢失问题

iframe跨域session丢失问题

哎呀,在做项目的时候,碰到一个很棘手的问题。

在一个应用中通过iframe的方式嵌入另一web应用,但是session中明明放了值,但是就是死活获取不到。

几经周折,终于皇天不负有心人,总算找到了关键命脉所在。

最近在做一个系统(A),需要在系统(A)中集成目前现存系统(B)的功能。

当然,系统(B)功能在访问时做了登陆限制。

(一般性都是:系统登陆后把userId放入session中,在具体的功能页面加入session中userId的判断,如果session中userId不存在,则跳到登陆页,否则继续加载并正常显示功能。

)那么,在系统(A)中要访问系统(B)的功能无非是要绕过系统(B)的登陆。

(一般的做法是先跳转到系统(B)中的一个页面,在这个页面里将userId塞入session中,再自动跳转到实际要访问的功能页面)以上做法,在不使用框架结构时,是可行的,确切的说是很简单的。

但是如果,系统(A)使用了框架结构,即系统(B)中的功能页面要嵌入到系统(A)的框架中,则会出现一些意想不到的问题,确切说是系统(B)跳转到了登陆页面,session丢失了。

为什么会这样呢?因为应用需求在一个页面的不同frame下面访问不同的域,结果造成了session丢失。

问题根源:IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。

Mircosoft对此的具体描述可以参见 Privacy in Internet Explorer 6解决办法是在要嵌入的内容中(iframe指向的站点)输出P3P的主机头声明:php:header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');:HttpContext.Current.Response.AddHeader("p3p", "CP=\""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""")jsp:response.setHeader("P3P","CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'")ColdFusion:<cfheader name="P3P" value="CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'" />。

Iframe导致跨域session丢失解决方法

Iframe导致跨域session丢失解决方法
、IE浏览器iframe跨域丢失Session问题
在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置: mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="40" />
fso.Deletefile(s)
End If
Set fso = Nothing
%>
详细出处参考:/article/14768.htm
<%Response.AddHeader "P3P","CP=CAO PSA OUR"%>
Response.AddHeader "P3P","CP=CAO PSA OUR"
比如要访问b站在a站设置一个cookies,则可以这s.htm
管理工具——〉选择一个网站——〉属性——〉http头,增加一个http头
然后输入头名:P3P,输入头内容:CP=CAO PSA OUR
如果没有权限配置IIS服务器,但是你用的是的话,可以用httpmodual来实现在全部页面或者部分页面头部插入所需要的标志
asp
内容为:
复制代码 代码如下:

uploadify_302错误

uploadify_302错误

uploadify_302错误1、错误原由: controller类有根据sessionId判断当前是否已经登陆过,当没有sessionId或者sessionId输⼊的值错误,就会调回登录界⾯,报出的错误代码为:3022、查看:可以根据uploadify 的onError⽅法中的参数:errorObj(type和info),可以查看到对应的错误信息3、解决⽅法:将当前的sessionId参数携带到URL中即可: script: '/upload.do;jsessionid=<%=session.getId()%'4、代码:function getUpload() {var buttonImg = $_frontPath+'/images/ny/add.png';$("#uploadify").uploadify({'uploader' : '<%=basePath %>/uploadify/scripts/uploadify.swf','script' : '<%=path %>${ADMIN_URL }/upload/uploadFiles;jsessionid=<%=session.getId()%>','cancelImg' : '<%=basePath %>/uploadify/cancel.png','buttonImg' : buttonImg,'queueID' : 'fileQueue','auto' : true,'multi' : true,'wmode' : 'transparent','simUploadLimit' : 999,'fileExt' : '*.png;*.gif;*.jpg;*.jpeg','fileDesc' : '*.png,*.gif,*.jpg,*.jpeg','onError': function(e, queueId, fileObj,errorObj){alert("类型:" + errorObj.type + "\r\n" +"错误信息:" + + "\r\n")},'onComplete' :function(event,queueId,fileObj,response,data){indx++;var retJson = eval(response)[0];/*$("#fileUL").append("<li id='li_"+indx+"'> <img src='<%=path %>"+retJson.filepath+"' style='width: 200px;height: 200px;' ></img>"+"<input type='hidden' name='borrowPicture' type='text' value='"+retJson.filepath+"' ></input>"+"&nbsp;&nbsp;&nbsp;<a href=\"javaScript:delet('li_"+indx+"')\" >删除</a>"+"</li>");*/}});};。

自-Ci框架下使用uploadify造成session丢失

自-Ci框架下使用uploadify造成session丢失

Ci框架下使用uploadify造成session丢失在Codeigniter框架下使用uploadify上传文件时,有时会因user-agent变化,带来貌似是session丢失的情况。

例如上传完文件后,莫名其妙的退出系统了,无法获取session_id了,等等类似情况。

ﻫﻫ总所周知,一般情况下,诸如uplo adify,swfupload采用的都是flash客户端,这样它们产生的useragent与用户使用浏览器的user-agent必然不同。

所以,虽然用户登录了你的系统产生了一个session,但是当触发上传程序时会产生另一个session(在上述user agent选项开启的情况下)。

ﻫ所以,不是session丢失了,而是当你上传文件时,CI为uploadify另外创建了一个sessio n。

因此就造成上述的情况了。

ﻫﻫ解决的方法有两个方法一:将$config['sess_match_useragent']设置成FALSEﻫ原因是因为:CI默认的session采用的是cookie session,其中在/application/config/config.php文件中$co nfig['sess_match_useragent'] = TRUE; 是需要你选择是否匹配useragent。

此时将$config['sess_match _useragent']设置成FALSE,重启服务器,刷新,上传时就不会重新验证useragent了。

但是为了安全起见,不建议使用方法一来一刀切的解决问题。

方法二:ﻫ1:修改框架下/system/libraries/Session.php文件的sess_read()方法,替换:$session =$this->CI->input->cookie($this->sess_cookie_name);为:if($this->CI->input->post('session_tmp'))ﻫ$session = str_replace(' ','+', $this->CI->input->post('session_tmp'));else$session =$this->CI->input->cookie($this->sess_cookie_name);2:紧接着在后面添加如下一个判断ﻫ//是文件上传则不要验证useragentif(stristr($this->CI->input->user_agent(),'s hockwave')){ﻫ$this->sess_match_useragent = FALSE;ﻫ}ﻫelseﻫ {$this->sess_match_useragent = TRUE;}3.处理开启CSRF检测,但flash不能正确获取cookie导致的表单验证错误。

解决window.location.href之后session丢失的问题

解决window.location.href之后session丢失的问题

解决window.location.href之后session丢失的问题
今天⼀个⼩伙伴问我问题,就是java后台把数据放⼊session,jsp⾥js重定向页⾯之后就取不到session⾥⾯的数据了,⽽且他本地可以,服务器上却取不到session
下⾯是他写的重定向代码:
我很少写前端,所以也蒙圈了,带着奇怪的问题google了下,发现问题的原因了session lost with window.location.href
⼤概意思就是:window.location.href 之后,重新创建了⼀个新的httpcontext ,所以导致session丢失了
既然知道问题原因了,那么问题的解决⽅式也就出来了
1、把session数据带到你重定向的页⾯去
2、把重定向操作放到后台去做,这样页⾯就不会创建新的httpContext,session数据就能获取到了
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。

如果你想了解更多相关内容请查看下⾯相关链接。

只要关闭浏览 器,session就消失了

只要关闭浏览 器,session就消失了

只要关闭浏览器,session就消失了只要关闭浏览器,session就消失了session靠Cookie来维持,每次给客户端一个cookie里面存放session id,然后请求的时候,服务器根据session id 找到对应的session。

这个cookie是在浏览器关闭的时候就实效的,自动登录的cookie需要设置成为关闭浏览器后还有效的那种。

今天晚上我做了一个晚上的试验。

证明了一个道理如果你使用的是遨游或者ie7这样的基于标签的浏览器。

那么当你在一个窗口中创建session以后,其他的所有标签都用这个session。

也就是说。

如果你登陆一个网站,而网站用的是session。

你用两个账号登陆,第二个账号创建的session 会将第一个覆盖掉。

除非你重开始菜单中打开另一个全新的遨游或者ie7.这个新打开的窗口才是一个全新的。

你这个时候在第二个遨游或者ie7中打开网站后,你将同时拥有两个账号。

关于ie6是这个样子的。

如果你打开一个网站,然后重网站的链接打开了新的ie6窗口,那么新的ie6窗口继承自上个窗口。

那么他们的session是共用的。

也就是说,你在继承打开的第二个窗口中重新登陆以后第一个窗口的session也会随第二个窗口改变。

在谈论session机制的时候,常常听到这样一种误解“只要关闭浏览器,session就消失了”。

其实可以想象一下会员卡的例子,除非顾客主动对店家提出销卡,否则店家绝对不会轻易删除顾客的资料。

对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留,程序一般都是在用户做log off的时候发个指令去删除session。

然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所以会有这种错觉,是大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个session id就消失了,再次连接服务器时也就无法找到原来的session。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Ci框架下使用uploadify造成session丢失
在Codeigniter框架下使用uploadify上传文件时,有时会因user-agent变化,带来貌似是session丢失的情况。

例如上传完文件后,莫名其妙的退出系统了,无法获取session_id了,等等类似情况。

总所周知,一般情况下,诸如uploadify,swfupload采用的都是flash客户端,这样它们产生的useragent与用户使用浏览器的 user-agent必然不同。

所以,虽然用户登录了你的系统产生了一个session,但是当触发上传程序时会产生另一个session (在上述 useragent选项开启的情况下)。

所以,不是session丢失了,而是当你上传文件时,CI为uploadify另外创建了一个session。

因此就造成上述的情况了。

解决的方法有两个
方法一:
将$config['sess_match_useragent']设置成FALSE
原因是因为:CI默认的session采用的是cookie session,其中在/application/config/config.php文件中
$config['sess_match_useragent'] = TRUE; 是需要你选择是否匹配useragent。

此时将$config['sess_match_useragent']设置成FALSE,重启服务器,刷新,上传时就不会重新验证useragent了。

但是为了安全起见,不建议使用方法一来一刀切的解决问题。

方法二:
1:修改框架下/system/libraries/Session.php文件的
sess_read()方法,
替换:
$session
=$this->CI->input->cookie($this->sess_cookie_na me);
为:
if($this->CI->input->post('session_tmp'))
$session = str_replace(' ', '+',
$this->CI->input->post('session_tmp'));
else
$session =
$this->CI->input->cookie($this->sess_cookie_nam e);
2:紧接着在后面添加如下一个判断
//是文件上传则不要验证useragent
if(stristr($this->CI->input->user_agent(),'shockwave')) {
$this->sess_match_useragent = FALSE;
}
else
{
$this->sess_match_useragent = TRUE;
}
3.处理开启CSRF检测,但flash不能正确获取cookie导致的表单验证错误。

修改/system/core/Input.php 的_sanitize_globals()方法

if ($this->_enable_csrf == TRUE && !
$this->is_cli_request())
{
$this->security->csrf_verify();
}
改为
if ($this->_enable_csrf == TRUE
&& !stristr($this->user_agent(),'shockwave')) {
$this->security->csrf_verify();
}
4.代码实例。

相关文档
最新文档