| 本案例由 小叶 提供 Email: support@my97.net 网站:http://www.my97.net | ![]() |
... <Param name="Cookie" value="?"> //for firefox/Chrome only ...我们知道,服务器判断http属于哪个Session是靠http中的Cookie来支持的,只要后端ASPX能够取得这个Cookie,并显式写入页面脚本,问题就迎刃而解了.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FireFoxCookie.aspx.cs" Inherits="SupcanDemo.FireFoxCookie" %> <!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 runat="server"> <title></title> <script type="text/javascript" src="supcan/dynaload2.js"></script> <script> //Firefox/Chrome中Cookie丢失的问题, 只要这里输出即可, 这是SessionId在Cookie中的固定写法 window.$sid = 'ASP.NET_SessionId=<%= System.Web.HttpContext.Current.Session.SessionID %>'; </script> ...如果您后端是Java, 那么应该在JSP中增加:
... </script> window.$sid = 'JSESSIONID=<%=request.getSession().getId()%>;Path=<%=request.getContextPath()%>'; </script>
...
function bldStr(ctlType, id, para) {
var w = window;
...
str += '<param Name="Cookie" Value="' +w.$sid+ '">';
str += '<param Name="CtlPara" Value="' +para+ '"></Object>';
return str;
}
...
完整的aspx demo包可以从 http://pan.baidu.com/s/1mgvATio 下载,文件名为 SupcanDemo_FirefoxCookie.zip。
function OnReady(id)
{
...
//判断浏览器 (略过)
...
// ASP.Net 是:
AF.func("setCookie", "ASP.NET_SessionId=<%= System.Web.HttpContext.Current.Session.SessionID %>");
// JSP 是:
AF.func("setCookie", "JSESSIONID=<%=request.getSession().getId()%>;Path=<%=request.getContextPath()%>");
...