【发布时间】:2012-01-05 22:37:21
【问题描述】:
在我发布到 feedburner 的提要中,我在跟踪设置 Feed: ${feedUri} ${feedName} 中的广告系列名称中有俄语字符。问题是它导致 Google Analytics 设置的 __utmz cookie 不正确,并且无法由我的后端(即 web.py)处理。
File "/home/dw0rm/lib/ve/lib/python2.7/site-packages/web/session.py", line 96, in _load
self.session_id = web.cookies().get(cookie_name)
File "/home/dw0rm/lib/ve/lib/python2.7/site-packages/web/webapi.py", line 359, in cookies
cookie.load(ctx.env.get('HTTP_COOKIE', ''))
File "/usr/local/lib/python2.7/Cookie.py", line 627, in load
self.__ParseString(rawdata)
File "/usr/local/lib/python2.7/Cookie.py", line 660, in __ParseString
self.__set(K, rval, cval)
File "/usr/local/lib/python2.7/Cookie.py", line 580, in __set
M.set(key, real_value, coded_value)
File "/usr/local/lib/python2.7/Cookie.py", line 455, in set
raise CookieError("Illegal key value: %s" % key)
CookieError: Illegal key value: )|utmcmd
这个错误发生在 Firefox 中,我已经设法用这段代码修复它:
def myinternalerror():
try:
web.cookies()
except CookieError:
if not "cookie_err" in web.input():
web.setcookie("__utmz", None, domain=web.ctx.host)
raise web.seeother(web.changequery(cookie_err=1))
return web.internalerror(render.site.e500())
app.internalerror = myinternalerror
但今天我什至在 Chrome 中也得到了这个“cookie_err=1”重定向。我在其他一些基于 web.py 和 Analytics 的网站上尝试过这个,它们都引发了内部服务器错误。并且这个错误一直持续到非法cookie被删除,这是普通访问者很难做到的事情。
我想知道我应该考虑哪些其他选项。也许 Python Cookie 模块不正确,或者是浏览器的错误导致了不正确的 cookie。这东西可以被用于恶意目的,因为有很多 Python 网站使用 Google Analytics 和 Cookie 模块。
这是跟踪查询:utm_source=feedburner&utm_medium=twitter&utm_campaign=Feed%3A+cafenovru+%28%D0%9E%D0%BF%D0%B8%D1%81%D1%8C+%D1%82%D1%80%D0%B0%D0%BF%D0%B5%D0%B7%D0%BD%D1%8B%D1%85+%D0%92%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B3%D0%BE+%D0%9D%D0%BE%D0%B2%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D0%B0%29
不正确的 __utmz cookie 值为 37098290.1322168259.5.3.utmcsr=feedburner|utmccn=Feed:%20cafenovru%20(Опись%20трапезных%20Великого%20Новгорода)|utmcmd=twitter
Analytics javascript 在第一次访问页面时设置了非法 cookie,并且在后续请求中出现服务器端错误。
【问题讨论】:
-
问题是Cookie坏了(这个cookie是合法的),但是除了修复Cookie之外没有真正的解决办法。
-
所以应该修复的是 Python 模块?
-
是的,Cookie 模块需要增强以支持更现代的 RFC。
-
是否有一个符合 Cookie 的模块可以解决这个问题?
标签: javascript python cookies google-analytics web.py