登录接口在 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
過去 2 日間 Google を検索した後、ついに問題を見つけたので、自分で記録する必要があると感じました。
リーリーそれはすべて、Request.credentials のせいです
クロスドメインリクエストを送信する場合、リクエストの資格情報属性は、他のドメインが Cookie を送信できるかどうかを示します。
この属性には 3 つの値があります。
省略: デフォルト属性、他のドメインは許可されません。 Cookie を送信する
same-origin: 同じドメインからの Cookie の送信のみを許可します
include: 常に Cookie の送信を許可します
そのため、認証情報を追加する必要があります。投稿リクエストを送信するときに含めます。
リーリーjq を使用する場合は、
同時に、サーバー側で以下を追加する必要があります:
リーリーこの問題は何日も私を悩ませてきましたが、まだ読書量が少なすぎます。 。 。
用token
まずブラウザ F12 を使用して Cookie をチェックし、入力したトークンがあることを確認します
友人、私もあなたと同じ問題を抱えています。背景コードは
リーリーSet-Cookie はフロントデスクの応答ヘッダーにも表示されます
舞台裏のことですね
リーリーこれを変更する方法はありますか?
リーリーフロントエンドリクエストをどうするか?
私のフロントエンドリクエストは次のようになります:
どのような調整が必要ですか?