CFcookie在各种浏览器中表现得很奇怪

时间:2012-05-09 21:41:01

标签: javascript cookies coldfusion

因此,以下代码在Firefox中完美运行

<!--Cookies-->
<cfset timer = createTimeSpan(0,3,0,0)>
<cfcookie name = "user.ID" value = "#userID#" expires="#timer#">               <!--this will expire in three hours -->
<cfcookie name = "user.Site" value = "#userSite#" expires="#timer#">
<cfcookie name = "user.Sess" value = "#userSess#" expires="#timer#">
<cfcookie name = "user.FName" value = "#userFName#" expires="#timer#">
<cfcookie name = "user.LName" value = "#userLName#" expires="#timer#">
<cfcookie name = "user.Email" value = "#userEmail#" expires="#timer#">
<cfcookie name = "user.SiteFirst" value = "#userSiteFirst#" expires="#timer#">
<cfcookie name = "user.RoundsTotal" value = "#userRoundsTotal#" expires="#timer#">
<cfcookie name = "user.RoundsCurrent" value = "#userRoundsCurrent#" expires="#timer#">

<!-- And now we send the user off to wait.cfm where they will wait --->
<!-- Users will not head to choose their picture choice --->

<script type="text/javascript">
    location.href='picChoice.cfm';
</script>

在Firefox中,所有Cookie中的值都会完美传递。任何其他浏览器,所有cookie都为空。

希望有人能在我无法看到的地方看错。如果您想查看完整的cfm,可以在此处执行此操作:http://pastebin.com/4G4wvjLd

2 个答案:

答案 0 :(得分:1)

我认为你有一个负载问题 - 在最终确定cookie操作之前浏览器被重定向。将您的location.href更改为cflocation或将其放在正文“onLoad()”事件中(或使用jquery的load事件来处理浏览器重定向细微差别)。

答案 1 :(得分:1)

代码看起来不错。我在这里运行它,使用cookie名称作为cookie值,例如并且在IE和Chrome中正确设置并传递了Cookie。 Cookie规范中存在一些漏洞(当天由Netscape编写)导致某些浏览器在某些情况下执行稍微不同的操作。 我推荐两件事:

1)简化发送的值。在我的情况下,我使用cookie名称作为cookie值,它似乎工作。我会做一个测试,只是在picChoice.cfm中使用cfdump#cookie#(这就是我在测试页面中所做的)

2)使用fiddler作为代理运行请求并观察浏览器获取和发送的内容,以确保您的代码确实发送了set-cookie标头并查看浏览器发送回服务器的内容