【发布时间】:2012-08-26 17:32:25
【问题描述】:
在这个问题上我已经用头撞了几个小时。我只是无法正确设置 cookie。我设置的 cookie 似乎永远不会被正确保存或发回。
情况是cookie:
- 发送完全相同的请求时会被退回,
- 发送具有不同路径的请求时不会被发回。
- 重新启动浏览器时似乎不存在
- 不显示在 Chrome 开发者工具的“资源”区域中。
服务器:“谷歌应用引擎”上的“webapp”
客户端: Chrome 浏览器、Javascript、jQuery、Ajax 调用
使用以下 ajax 登录用户,这应该设置一个带有“令牌”的 cookie:
$.ajax({
type: 'POST',
url: '/rest/login/',
data: JSON.stringify({username:username, password: password}),
error: function(jqXHR, status, errorThrown){...},
success: function(data, status, jqXHR){...}
});
这会产生以下标题larger pic:
服务器在谷歌应用引擎上运行 webapp,这是它设置 cookie 的方式:
w_self.response.set_status(200)
# Put the token in the cookies. "str()" is used because without it, there is a unicode error
w_self.response.headers.add_header(str('Set-Cookie'), str('token=%s; max_age=360;' % token))
# The user
r_object['user'] = the_user
# Respond
w_self.response.out.write(json.dumps(r_object))
如果该页面再次被请求,cookie被发送回服务器larger pic:
但似乎没有保存在任何地方,因为我在开发者工具larger pic中探索cookie时永远找不到它@:
在请求路径不完全相同的资源时也不发送它('logout'而不是'login':
$.ajax({
type: 'POST',
url: '/rest/logout/',
data: JSON.stringify({something:'else'}),
error: function(jqXHR, status, errorThrown){...},
success: function(data, status, jqXHR){...}
});
这是请求的样子:
【问题讨论】:
标签: javascript ajax google-app-engine web-applications cookies