2016-06-11 3 views
1

document.cookie = "mySessionCookie=mySessionToken"がブラウザですぐに設定されないという印象を受けています。Document.cookieの設定者はWebブラウザで非同期ですか?

はより正確には、ここに私の状況です:私がログインしてい

  • 私はJavascriptを使用してログアウトします。
  • したがって、たとえばdocument.cookie = "mySessionCookie=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT"と設定します。
  • 次に、window.location.reload()に電話して、私がログアウトしたことを確認します。

ほとんどの場合動作しますが、ブラウザには新しいCookie値を設定するための十分な時間がないようです。window.location.reload()を呼び出します。

私のコードで何か間違っていない限り、その動作は同じスタック上で実行されないことを示唆しています(したがって、それ自体は非同期ではないかもしれませんが、残りの部分と一緒に使用すると、コード)。

私の質問は、別のスタックでdocument.cookie = "value"を実行できますか?

+1

いいえ... javascriptはシングルスレッドで、設定Cookieは同期です。おそらくあなたの問題は別のものです – charlietfl

+0

@charlietfl、これを確認していただきありがとうございます。私のコードには何か問題があるはずです。 – focorner

答えて

1

確かに、私の元の質問に対するコメントとして@charlietflによって指摘されているように、document.cookieセッターはすぐにクッキーを設定します。

私の本当の問題は、私のプログラムでは、ブラウザがクッキーの値と共にパスが与えられていないときに現在のURIに基づいてクッキーの「パス」を設定するという事実に注意を払わなかったというエラーでしたJavaScriptを使用してCookieを設定するとき例えば

http://example.com/fake-resourceでリソースを見ながら、1はexample.comですべてのURIのためのセッションをクリアしたい場合、1を明示的に記述する必要があります。

document.cookie = "sessionToken=;Path=/;Expires=Thu, 01 Jan 1970 00:00:00 GMT"

(すなわちパスは= /省略された場合)ブラウザはメインのクッキーが存在し続けるようにexample.com/fake-resourceの第2のクッキーを作成します。

関連する問題