基本的に私はa.example.comからwww.example.comへのリダイレクトを行っており、www.example.comのCookieを削除できると期待しています(Cookieは.example.comをCookieドメインとして作成されているため)。次のコードは機能しません。
私はこの質問が重複した質問のように見えることを知っています。同様の質問からすべてを試しましたが、うまくいきません。コードの後に私がすでに試したことを見てください。
Express 3.0.3およびノード0.10.32を使用します。
エクスプレスセッションミドルウェア
...
var cookiedata = {
domain : '.example.com',
originalMaxAge : null,
httpOnly : false
};
app.use(express.session({
store : ...,
secret : ...,
key : 'express.sid',
cookie : cookiedata
}));
...
ログアウト機能
function logout(req, res){
...
req.session.destroy(function(){
req.session = null;
res.clearCookie('express.sid', { path: '/' });
res.redirect('https://www.example.com');
});
}
同様の質問からすでに試したこと
だから私はpath : '/'
次のような高速セッションミドルウェア:
app.use(express.session({ ..., path : '/' });
失敗。
失敗。
これはExpress.JSのresponse.clearCookieです(749行目のresponse.jsファイル)。
var opts = merge({ expires: new Date(1), path: '/' }, options);
return this.cookie(name, '', opts);
この行にブレークポイントを設定すると、有効期限が無効な日付で報告されます。したがって、response.clearCookieを使用する代わりに、このようにすぐに期限切れにするだけです。
response.cookie("express.sid", "", { expires: new Date() });
これはcookie-parser
モジュールで私のために働いています:
router.get('/logout', function(req, res){
cookie = req.cookies;
for (var prop in cookie) {
if (!cookie.hasOwnProperty(prop)) {
continue;
}
res.cookie(prop, '', {expires: new Date(0)});
}
res.redirect('/');
});