5

i theo mẫu authorized-https-endpoint và chỉ thêm console.log để in req.cookies, vấn đề là cookie luôn rỗng {} Tôi đặt cookie bằng cách sử dụng khách hàng JS gọi và họ tiết kiệm nhưng từ một số lý do, tôi không thể có được chúng ở phía máy chủ.chức năng đám mây của Firebase sẽ không lưu trữ cookie có tên khác "__session"

đây là đoạn code đầy đủ của index.js, đó là chính xác giống như các mẫu:

'use strict'; 

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 
const express = require('express'); 
const cookieParser = require('cookie-parser')(); 
const cors = require('cors')({origin: true}); 
const app = express(); 

const validateFirebaseIdToken = (req, res, next) => { 
    console.log(req.cookies); //// <----- issue this is empty {} why?? 
    next(); 
}; 

app.use(cors); 
app.use(cookieParser); 
app.use(validateFirebaseIdToken); 
app.get('/hello', (req, res) => { 
    res.send(`Hello!!`); 
}); 

exports.app = functions.https.onRequest(app); 

lưu trữ cookie:

curl http://FUNCTION_URL/hello --cookie "__session=bar" // req.cookies = {__session: bar}

không lưu trữ:

curl http://FUNCTION_URL/hello --cookie "foo=bar" // req.cookies = {}

Trả lời

10

Nếu bạn đang sử dụng Fi rebase Hosting + Cloud Functions, __session là cookie duy nhất bạn có thể lưu trữ, theo thiết kế. Điều này là cần thiết để chúng tôi có thể lưu trữ nội dung hiệu quả trên CDN - chúng tôi loại bỏ tất cả cookie khỏi yêu cầu khác ngoài __session. Điều này sẽ được ghi lại nhưng không xuất hiện (oops!). Chúng tôi sẽ cập nhật tài liệu để phản ánh giới hạn này.

+0

cảm ơn vì đã cho tôi biết. vâng, một tài liệu tốt sẽ tiết kiệm cho tôi 2 ngày ... Tôi thực sự hy vọng bạn sẽ cho phép hỗ trợ nhiều cookie vì nó là khá cần thiết cho mọi trang web hiện đại, những người sử dụng phân tích, quảng cáo, theo dõi, v.v ... –

+0

Lưu ý: bạn có thể đặt cookie bằng cách sử dụng Chức năng đám mây và bạn có thể đặt và truy xuất chúng ** trong JavaScript phía máy khách ** mà không gặp sự cố. Nó chỉ là * trên máy chủ * mà bạn bị giới hạn ở '__session'. Nó không ảnh hưởng đến phân tích, quảng cáo, v.v. –

+1

nhưng bạn cũng cần truy cập cookie từ phía máy chủ. tôi nhận được giới hạn bộ nhớ đệm nhưng có thể tốt hơn nếu khai báo tên cookie bạn có trong tệp cấu hình 'firebase.json' hoặc một cái gì đó để bạn có thể có nhiều hơn một. –

Các vấn đề liên quan