5

i authorized-https-endpoint örneğini izledim ve req.cookies yazdırmak için sadece konsol.log ekledim, sorun çerezlerin her zaman boş olduğunu {} İstemci JS çağrıları ve kaydetmeleri, ancak bazı nedenlerden dolayı onları sunucu tarafında alamıyorum.firebase bulut işlevi, "__session" adında başka bir "cookie" saklayamaz.

'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); 

mağaza çerezi:

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

saklamaz:

burada

tam olarak numunenin aynıdır, index.js tam kodudur curl http://FUNCTION_URL/hello --cookie "foo=bar" // req.cookies = {}

cevap

10

Fi kullanıyorsanız Hosting + Cloud Fonksiyonlarını Yeniden Barındırma, __session, tasarlayabileceğiniz tek çerezdir. Bu, CDN'deki içeriği verimli bir şekilde önleyebilmemiz için gereklidir - tüm çerezleri __session'dan farklı bir istekle çıkarırız. Bu belgelenmelidir, ancak görünmüyor (oops!). Bu sınırlamayı yansıtacak belgeleri güncelleyeceğiz.

+0

Bana bildirdiğiniz için teşekkür ederiz. evet, iyi bir dokümantasyon beni 2 gün kurtardı ... Gerçekten çok fazla çerez desteği sağladığını umuyorum. Analitik, reklam, izleme vb. her modern site için bir zorunluluktur. –

+0

Not: Cloud Functions kullanarak çerezleri kurabilir ve bunları istemci tarafı JavaScript **’de ** sorunsuz olarak kurabilir ve alabilirsiniz. Sadece sunucuda *, __session ile sınırlıdır. –

+1

evet, ancak analitik, reklamlar, vb etkilememelidir, ancak genellikle sunucu tarafında çerezlere erişmeniz gerekir. önbelleğe alma kısıtlaması aldım, ancak 'firebase.json' yapılandırma dosyasında veya bir şeyden daha fazlasına sahip olabilmeniz için sahip olduğunuz çerez adlarını bildirmek güzel olabilir. –