【发布时间】:2016-01-01 22:47:30
【问题描述】:
Cookie 仅适用于没有 www 的域。字首。为什么?
当用户位于查询字符串标识的路径上时,我希望将我的 cookie 发送到服务器。 路径始终是相同的 CGI 脚本。
问题是当有问题的页面被调用时,以下代码可以完美运行:
http://example.com/cgi-bin/something.py?q=some_query_key
但是当它被称为:
http://www.example.com/cgi-bin/something.py?q=some_query_key
那么设置的 cookie 不起作用。 IE。即使设置了一些cookie,再次加载页面时它也不会返回服务器。
import cgi
import cgitb
cgitb.enable()
import Cookie,
import datetime
import os
def setcookie (q, rated, asked, posted):
expiration = datetime.datetime.now() + datetime.timedelta(days=3650)
cookie = Cookie.SimpleCookie()
cookie["session"] = "%i:%i:%i" % (rated, asked, posted)
cookie["session"]["domain"] = "example.com"
cookie["session"]["path"] = "/cgi-bin/something.py?q="+q
cookie["session"]["expires"] = expiration.strftime("%a, %d-%b-%Y %H:%M:%S P$
print cookie.output()
rated, asked, posted = (0, 0, 0)
if not os.environ.has_key("HTTP_COOKIE"):
setcookie("some_query_key", 1, asked, posted)
else:
cookie = Cookie.SimpleCookie(os.environ["HTTP_COOKIE"])
rated, asked, posted = map(int, cookie["session"].value.split(":"))
print "Content-Type: text/html\n"
print "<h1>Some HTML, blah blah...</h1><br>"
print "Tuple (rated, asked, posted):", (rated, asked, posted)
这是一个示例代码,因此不包括错误处理,并且使用了虚构的域和路径。
有谁知道这里发生了什么。我使用的是 Mozilla Firefox。
【问题讨论】: