ASP.NET帮助! FireFox正在吃我的饼干!
IE工作正常,但FireFox没有。ASP.NET帮助! FireFox正在吃我的饼干!
我设置一个cookie我Default.aspx页面上:
HttpCookie hc = new HttpCookie("guid", guid.ToString());
hc.Expires = DateTime.Parse("12/12/2010");
Response.Cookies.Add(hc);
我的上传控件(我用的SWFUpload)提交给upload.aspx。
在upload.aspx我打电话:
if (Request.Cookies["guid"] != null)
{
// Do something.
}
...我的cookie只包含我的ASP.NET会话变量。有任何想法吗?
我试图通过我的Flex应用程序在Firefox中上传文件时遇到了同样的问题。如果你也使用Flash,你可能想要做我所做的;如果您使用的是HTML控件,这可能适用,也可能不适用。
我为解决Firefox问题所做的工作是在服务器上发出一次性使用令牌,然后在上传时发布该令牌(例如,它可能是表单中的隐藏字段)。如果令牌在上传时被识别,则上传被处理,然后令牌过期。所以基本上你在做什么,只是不使用cookie。
首先,DateTime
有一个类型安全的构造函数,它是new DateTime(2010, 12, 12)
。
其次,您使用的cookie的名称不同:vs applicationGuid
。不是两者都可以使用。
呃,应该是同一个名字 - 那不是问题。 – 2010-02-11 14:49:26
这是我用来添加/获取cookie值。在IE和FF
对我的作品的addCookie:
HttpCookie c = new HttpCookie("myCookie");
c.Expires = new DateTime(2050, 1, 1);
c.Values.Add("key", "value");
的getCookie:
string value = Request.Cookies["myCookie"]["key"];
在幕后,你可能设置相同的cookie的两倍。 Firefox和IE可能会有所不同,他们选择保留哪一个。 ASP.NET喜欢在很多Web应用程序中自动设置一个“guid”cookie。通过选择这个名字,你必然会在自动逻辑和你自己的逻辑之间产生张力。查看所发生情况的最好方法是将Live HTTP Headers加载项加载到Firefox。它将允许您准确查看将哪些cookie命令发送给最终用户。您还可以强制类似的问题,看看它重建:
HttpCookie hc = new HttpCookie("testcookie", "xyz");
hc.Expires = DateTime.Parse("12/12/2010");
Response.Cookies.Add(hc);
hc = new HttpCookie("testcookie", "abc");
Response.Cookies.Add(hc);
这将导致一个HTTP标头有两个Set-Cookie
电话:
Set-Cookie: testcookie=xyz; expires=Sun, 12-Dec-2010 07:00:00 GMT; path=/
Set-Cookie: testcookie=abc; expires=Sun, 12-Dec-2010 07:00:00 GMT; path=/
从那里,它是由浏览器来决定是否第一或者最后是最终值。如果两个浏览器以不同的方式进行,您最终会遇到您所描述的情况。安装Live HTTP Headers插件并寻找类似的东西。至少,您应该考虑将“guid”作为您应该在ASP.NET窗体应用程序中使用的cookie名称。
如果您绝对需要让多个地方设置相同的cookie,请尝试先找到它(如果不存在,请创建一个新的地方)。这将确保您重写现有Cookie的价值,而不是创建具有相同名称的另一个Cookie。
HttpCookie hc = Response.Cookies["testcookie"];
if (null == hc) {
hc = new HttpCookie("testcookie");
Response.Cookies.Add(hc);
}
hc.Value = "xyz";
让我想起这条芝麻街角色...... – mjv 2010-02-11 14:45:34
是Firefox阻止cookies吗? http://www.wilderssecurity.com/showthread.php?t=246106 你使用Session吗?它在Firefox中工作吗? – Greg 2010-02-11 14:52:03
OM NOM NOM? (对不起,不能帮助我自己) – Lucas 2010-02-11 15:52:05