在这个问题上我已经用头撞了几个小时。我只是无法正确设置 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){...}
});
这会产生以下标题更大的图片:
服务器在谷歌应用引擎上运行 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 发送回服务器大图:
但似乎没有保存在任何地方,因为在开发人员工具大图中探索 cookie 时我永远找不到它:
当请求路径不完全相同的资源时也不会发送它('logout'而不是'login':
$.ajax({
type: 'POST',
url: '/rest/logout/',
data: JSON.stringify({something:'else'}),
error: function(jqXHR, status, errorThrown){...},
success: function(data, status, jqXHR){...}
});
这是请求的样子:
大图: