Tôi gặp sự cố khi đặt cookie thông qua chuyển phát nhanh. Tôi đang sử dụng Este.js dev stack
và tôi cố gắng đặt cookie trong API auth /login
tuyến đường. Dưới đây là đoạn code mà tôi sử dụng trong /api/v1/auth/login
đườngExpress không đặt cookie
res.cookie('token', jwt.token, {expires: new Date(Date.now() + 9999999)});
res.status(200).send({user, token: jwt.token});
Trong src/server/main.js
Tôi đã đăng ký cookie-parser
như middleware đầu tiên
app.use(cookieParser());
Tiêu đề phản ứng cho /api/v1/auth/login
đường chứa
Set-Cookie:token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ..
nhưng cookie không được lưu trong trình duyệt (document.cookie
là trống rỗng, cũng Resources - Cookies
tab trong công cụ develepoers là trống) :(
EDIT: Tôi thấy rằng khi tôi gọi đây là trong /api/v1/auth/login
(không gọi res.send
hoặc res.json
)
res.cookie('token', jwt.token, {expires: new Date(Date.now() + 9999999), httpOnly: false});
next();
thì cookie được đặt VÀ tiêu đề phản hồi đã đặt X-Powered-By:Este.js
... bộ này esteMiddleware
trong expres frontend rendering part.
Khi tôi sử dụng res.send
res.cookie('token', jwt.token, {expires: new Date(Date.now() + 9999999), httpOnly: false}).send({user, token: jwt.token});`
next();
sau đó tôi nhận được lỗi Can't set headers after they are sent.
vì send
phương pháp được sử dụng, vì vậy lối làm ném lỗi này.
Nhưng tôi phải gửi dữ liệu từ API, vậy làm thế nào tôi có thể giải quyết vấn đề này?
Một số người có thể giúp tôi không? Cảm ơn!
Bạn có nhận ra rằng đó là 'document.cookie', không phải' document.cookies'? Và, khi bạn tìm kiếm các tập tin cookie là bạn trong một trang với cùng một tên miền như '/ api/v1/auth/login' đã được gửi đến? – jfriend00
Xin lỗi vì lỗi đánh máy, chắc chắn 'document.cookie' trống (đã chỉnh sửa). Có, tất cả mọi thứ trong cùng một miền đều có tại http: // localhost: 8000/' – Mira
@Mira Là cookie có sẵn phía máy chủ trong các yêu cầu sau này - [' req.cookies.token'] (http://expressjs.com/ vi/4x/api.html # req.cookies)? Các tùy chọn khác được đưa ra trong tiêu đề 'Đặt-Cookie' sau giá trị? –