node.js - koa 无法将cookie写入到客户端
黄舟
黄舟 2017-04-17 15:25:25
0
4
425

登录接口在 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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(4)
洪涛

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

リーリー

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

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

リーリー

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

リーリー

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

いいねを押す +0
Peter_Zhu

用token

いいねを押す +0
PHPzhong

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

いいねを押す +0
伊谢尔伦

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

リーリー

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

舞台裏のことですね

リーリー

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

リーリー

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート