この問題について、数時間頭を井戸にぶつけていました。Cookie を正しく設定できません。私が設定している Cookie は、保存されたり、適切に送り返されたりしないようです。
状況は、Cookie:
- まったく同じリクエストを送信すると返送されますが、
- 別のパスでリクエストを送信した場合、返送されません。
- ブラウザを再起動しても持続しないようです
- Chrome 開発者ツールの [リソース] 領域に表示されません。
サーバー:「google app engine」の「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){...}
});
これにより、次のヘッダーの大きな picが生成されます。
サーバーは、Google アプリ エンジンで 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 IS がサーバーに送り返されます。
しかし、開発者ツールの大きな写真でクッキーを探索するときに見つけることができないため、どこにも保存されていないようです:
また、パスがまったく同じではないリソースをリクエストした場合にも送信されません (「login」ではなく「logout」:
$.ajax({
type: 'POST',
url: '/rest/logout/',
data: JSON.stringify({something:'else'}),
error: function(jqXHR, status, errorThrown){...},
success: function(data, status, jqXHR){...}
});
リクエストは次のようになります。