2016-10-30 9 views
0

ブラウザからPOST要求がサーバーの/generate URLに送信された後、文字列を作成してクッキーとして保存します。後でブラウザからサーバーの/retrieve URLにGET要求が送信されると、その文字列をクライアントへの応答として送信します。ここで「未定義」を返すコアクッキー

は、私が試したものです:

routes.js

const Router = require('koa-router') 
const router = new Router() 

router.post('/generate', function *() { 
    this.cookies.set('generatedString', 'example') 
    this.response.body = 'String saved as cookie!' 
}) 

router.get('/retrieve', function *() { 
    const cookie = this.cookies.get('generatedString') 
    console.log(cookie) // undefined! 
    this.response.body = cookie 
}) 

なぜPOSTリクエストハンドラがすでに実行しているとクッキーというsetを持つべきであるにもかかわらず、this.cookies.get('generatedString')リターンundefinedをやっていますか?どんな助けもありがとう!


EDIT:ことが重要である場合には、私は私がPOSTを行い、要求をGETするfetch APIを使用していますことを言及する価値があるだろうと思いました。

答えて

0

重要な場合は、POST APIとGETリクエストを作成するためにフェッチAPIを使用していることに言及することは重要です。 fetch API

は、「デフォルトでは、サイトはユーザーセッションを維持することに依存している場合、認証されていない要求で、その結果、サーバーへのすべてのクッキーを送信しません取得します。」と述べて

あなたはfetchはクッキーを送信する場合は、credentialsと呼ばれるあなたが送信要求にオプションを追加し、includeの値に設定する必要があります。

例POSTリクエスト:

fetch('/retrieve', { credentials: 'include' }).then(...) 

const request = { 
    method: 'POST', 
    credentials: 'include', 
    headers: ..., 
    body: ... 
} 

fetch('/generate', request).then(...) 

例リクエストをGET