Cookie 在 Opera 中未正确来回发送

2022-08-30 21:18:26

首先,我不确定这是否是Opera 12.01中的问题,但问题只发生在Opera中。我已经在Ff14,Chrome 21,Safari 5(Windows)和Safari Mac以及Android和iPhone上的Webkit浏览器中进行了测试。

我的应用程序在 trigger.io forge 平台上运行,并使用代理将请求从 Web 应用程序路由到服务。代理只是转发请求和cookie,这在大多数浏览器中按预期工作。

在检查了dragonfly中的请求后,我注意到服务器在响应中发送了正确的标头,但Opera似乎忽略了设置值。我想知道这是否是由于cookie的路径值配置错误。我已经在Firefox和Opera中附加了2个请求的屏幕截图。

正如您在屏幕中看到的,FF会看到cookie标头并对其进行适当的设置,但Opera不会。

火狐请求

Firefox request

歌剧请求 1 屏幕

Opera request 1

歌剧请求 2 屏幕

Opera Request 2

我还没有包含来自执行请求转发的代理的代码,因此,如果您需要它来获得一些见解,请告诉我。在服务端,我正在运行PHP和Codeigniter。请让我知道,如果我需要在这里添加任何关于我的环境的信息,谢谢。

更新:即使在不使用自定义TLD的生产环境中也会出现此问题。其他使用 Cookie 的网站可以正常工作,并且启用了 Cookie。


答案 1

双引号在 Cookie 值中正式是非法的。如果将它们转义为 %22,它将起作用。


答案 2

您是否检查过这是否是cookie域的问题?我假设你正在使用Javascript来设置/读取cookie?无论如何,您可能需要检查4个cookie域问题(我知道我在旧的FF版本中遇到了这些问题):

1 - 检查是否存在非法 Cookie 字符:允许的 Cookie 字符可能不允许在 Cookie 名称中使用“-”或“=”,并且您根本不应在 Cookie 中使用非 ASCII 字符。base64 编码可能会处理此问题。

2 - 检查您设置cookie的域(通过javascript代码或任何其他方式)是否与执行代码的域相同。

3 - 检查cookie域不是本地主机;查看您是否可以测试从远程域设置 Cookie

4 - 如果您使用 JS 设置 Cookie,请尝试测试是否可以在浏览器中使用 CGI 设置 Cookie,以确保这不是浏览器问题。如果它能正常工作,看看你是否可以使用JS读取cookie(而不是设置它)。

在评论中让我知道这是怎么回事,我已经多次处理过类似的问题,并且根据您通过这些检查获得的内容,我很确定我可以帮助您解决问题。


推荐