首先,我不确定这是否是Opera 12.01中的问题,但这个问题只在Opera中出现。我已经在安卓和iPhone的FF14、Chrome21、Safari5 (Windows)、Safari Mac和Webkit浏览器上进行了测试。
我的应用程序在trigger.io forge平台上运行,并使用代理将请求从web应用程序路由到服务。代理只是简单地转发请求和cookie,这在大多数浏览器中都能正常工作。
在检查了dragonfly中的请求后,我注意到服务器在响应中发送了正确的报头,但Opera似乎忽略了这些值的设置。我想知道这是不是由于cookie的某些错误配置的路径值造成的。我在Firefox和Opera中附上了2个请求的截图。
正如您在屏幕上看到的,FF可以看到cookie标头并对其进行适当的设置,但Opera并非如此。
我还没有包含来自代理的代码来进行请求转发,所以如果需要的话,请让我知道,以便获得一些见解。在服务端,我运行PHP和Codeigniter。如果我需要在我的环境中添加更多信息,请让我知道,谢谢。
更新:即使在不使用自定义TLD的生产环境中,也会出现此问题。其他使用cookies的站点工作正常,并且cookies已启用。
发布于 2012-08-16 01:59:30
您是否检查过这是否是cookie域的问题?我假设你正在使用Javascript来设置/读取cookie?在任何情况下,有4个cookie域问题你可能想要检查(我知道我在旧的FF版本中遇到了这些问题):
1-检查非法cookie字符:allowed cookie characters您可能不允许在cookie名称中使用'-‘或'=’,并且您根本不应该在cookie中使用非ASCII码字符。base64编码可能会处理此问题。
2-检查您设置cookie的域(通过javascript代码或任何其他方式)与执行代码的域是否相同。
3-检查cookie域是否不是本地主机;查看是否可以测试从远程域设置cookie
4-如果您使用JS来设置cookie,请尝试测试是否可以在浏览器中使用CGI设置cookie,以确保这不是浏览器问题。如果它正常工作,看看你是否可以使用JS读取cookie (而不是设置它)。
请在评论中让我知道这是如何进行的,我已经处理了许多次类似的问题,根据您通过这些检查得到的结果,我非常确定我可以帮助您解决这个问题。
发布于 2012-08-13 00:34:13
看看这些Opera截图,它们似乎是在同一秒内处理的AJAX / XHR请求。有没有可能Javascript“同时”触发了这两个请求,因此来自“第一个”的响应在构造“第二个”的请求之前没有到达--因此cookie还没有被设置?
我不熟悉您正在使用的技术/工具包,所以不知道这些是常用代码还是您的自定义应用程序的一部分。
https://stackoverflow.com/questions/11869902
复制相似问题