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

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

지난 이틀 동안 구글을 검색한 끝에 마침내 문제를 발견했고, 직접 녹음해야겠다는 생각이 들었습니다.
이게 다 Request.credentials 때문이에요

으아악

교차 도메인 요청을 보낼 때 요청의 자격 증명 속성은 다른 도메인이 쿠키를 보낼 수 있는지 여부를 나타냅니다.
이 속성에는 3가지 값이 있습니다.
생략: 기본 속성, 다른 도메인은 허용되지 않습니다. 쿠키 전송
same-origin: 동일한 도메인에서만 쿠키 전송 허용
include: 항상 쿠키 전송 허용

따라서 자격 증명을 추가해야 합니다. 게시물 요청을 보낼 때 포함하세요.
jq를 사용하는 경우

으아악

동시에 서버측에서는 다음을 추가해야 합니다.

으아악

이 문제는 여러 날 동안 나를 괴롭혀 왔고, 여전히 책을 너무 적게 읽습니다. . .

Peter_Zhu

용 token

PHPzhong

먼저 브라우저 F12를 사용하여 쿠키를 확인하여 입력한 토큰이 있는지 확인하세요

伊谢尔伦

친구여, 나도 당신과 같은 문제를 안고 있습니다. 배경 코드는

입니다. 으아악

세트 쿠키는 프론트 데스크의 응답 헤더에서도 볼 수 있습니다

백스테이지 말씀이시죠

으아악

이렇게 바꾸는 방법인가요?
프런트 엔드 요청은 어떻게 해야 하나요?
내 프런트엔드 요청은 다음과 같습니다.

으아악

어떤 조정이 필요합니까?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿