検索

ホームページ  >  に質問  >  本文

node.js - koa 无法将cookie写入到客户端

登录接口在 api.site.com 下,登录之后会把用户的access_token 以cookie 的方式往 site.com 这个域名下写,但是刷新页面之后在请求头里面看不到cookie,this.cookies.get()也是undefined,说明没有写成功。

使用的是本地开发环境,api.site.com 和 www.site.com 实际上都是 localhost(127.0.0.1),改的host实现的

代码如下:

if(validateEmail && validateUsername) {
    let [User] = yield this.db.query(sql, user);
    let id = User.id
    const token = yield user.generateAccessToken(id);
    this.cookies.set('access_token', token, {
        domain: '.site.com'
    })
    this.body = User;
}

求大神支招

更新

整了个 nginx 代理,问题依然存在

可以在response header 里面看到服务器端有写入的 set-cookies

但是在浏览器的cookies 里面看不到,页面请求也没有携带这个cookie

黄舟黄舟2873日前456

全員に返信(4)返信します

  • PHP中文网

    PHP中文网2017-04-17 15:27:25

    過去 2 日間 Google を検索した後、ついに問題を見つけたので、自分で記録する必要があると感じました。
    それはすべて、Request.credentials のせいです

    リーリー

    クロスドメインリクエストを送信する場合、リクエストの資格情報属性は、他のドメインが Cookie を送信できるかどうかを示します。
    この属性には 3 つの値があります。
    省略: デフォルト属性、他のドメインは許可されません。 Cookie を送信する
    same-origin: 同じドメインからの Cookie の送信のみを許可します
    include: 常に Cookie の送信を許可します

    そのため、認証情報を追加する必要があります。投稿リクエストを送信するときに含めます。
    jq を使用する場合は、

    リーリー

    同時に、サーバー側で以下を追加する必要があります:

    リーリー

    この問題は何日も私を悩ませてきましたが、まだ読書量が少なすぎます。 。 。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 15:27:25

    用token

    返事
    0
  • PHPz

    PHPz2017-04-17 15:27:25

    まずブラウザ F12 を使用して Cookie をチェックし、入力したトークンがあることを確認します

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 15:27:25

    友人、私もあなたと同じ問題を抱えています。背景コードは

    リーリー

    Set-Cookie はフロントデスクの応答ヘッダーにも表示されます

    舞台裏のことですね

    リーリー

    これを変更する方法はありますか?
    フロントエンドリクエストをどうするか?
    私のフロントエンドリクエストは次のようになります:

    リーリー

    どのような調整が必要ですか?

    返事
    0
  • キャンセル返事