为了测试一些东西,我一直在使用在 .appspot.com 域上设置 cookie 的技巧,这允许我在两个不同的 .appspot.com GAE 应用程序之间共享数据。这在 Firefox 6 中已停止工作,一位谷歌人员告诉我:
It's because appspot.com was added to the public suffix list of domains that modern browsers should not allow cookies to be set for: http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1
这对普通用户来说完全有意义。但是对于我的测试,我真的很想让 FF 将 .appspot.com 视为常规域,而不是“有效的 TLD”。有没有办法将 .appspot.com 列入“白名单”或以其他方式覆盖 FF 中使用的 effective_tld_names.dat?
(我需要一个可以在 OS X 上运行的 hack,以防万一。)
最佳答案
不幸的是,没有支持的方法可以做到这一点。我检查了 nsCookieService
的实现,方法 SetCookieStringInternal
将拒绝无法从中获取基本名称的任何主机名(现在“appspot.com”就是这种情况 -对于 Firefox 引擎,这不再是完整的主机名)。这意味着除了“手动”写入数据库之外,即使扩展程序也不能为“appspot.com”设置 cookie。但这在这里没有多大帮助,因为方法 GetCookiesFromHost
也使用基域进行检查,因此将忽略“appspot.com”的任何 cookie。
鉴于 effective_tld_names.dat 被编译成 xul.dll,更改此数据的唯一方法是在此文件上使用十六进制编辑器,例如将“appspot.com”替换为“bppspot.com”,这应该“禁用”此规则。请注意,这样的操作会破坏增量更新,您必须在更新后重复此操作。
关于google-app-engine - 有什么方法可以将 .appspot.com 列入白名单,以便我可以在 Firefox 6 中的该域上设置 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7110681/