2017-06-07 2 views
2

における応答にクッキーを設定する方法、私はこれを実行しようとしました:はServiceWorkerページナビゲーションによってトリガフェッチハンドラで

return event.respondWith(new Response('Hello!', { 
    headers: { 
    "Set-Cookie": "TestCookie=foo; path=/; Max-Age=60;" 
    "TestHeader": "foo" 
    } 
})); 

それから私はブラウザに任意のURLをロードし、「こんにちはました! "体。 Chromeのdevtoolsでは、ネットワークパネルにTestHeaderが設定されています。しかし、クッキーはネットワークパネルやアプリケーション> Cookieビューアには表示されません。 document.cookieもそれを生成することができません。

リクエストはページナビゲーションによって開始されるため、ブラウザのタブからフェッチにcredentials: "include"を設定する機会はありません。

ServiceWorkerの応答にクッキーを追加することはできますか?そうでない場合、他の方法でクッキーを書くことは可能ですか?

答えて

1

Fetch仕様に関連する情報があります。 https://fetch.spec.whatwg.org/#forbidden-response-header-name 1として

禁止応答ヘッダ名のいずれかのために バイト大文字と小文字を区別しない一致するヘッダ名:

  • Set-Cookie
  • Set-Cookie2
における

そして項目6の通り:

ガードがあればそうでない場合は、「応答」と名前が戻り、禁止レスポンスヘッダ名です。

Set-Cookieヘッダに追加するこの制限は、ヘッダーの最初のセットで新しいResponseオブジェクトを構築する、または既存のResponseオブジェクトに事後ヘッダに追加することのいずれかに適用されます。

サービスワーカーの内部でCookieの読み取りと書き込みをサポートする予定ですが、ResponseオブジェクトのSet-Cookieヘッダー以外のメカニズムが使用されます。計画についての詳細はthis GitHub issueです。

関連する問題