5

मैंने authorized-https-endpoint के नमूने का पालन किया और req.cookies को मुद्रित करने के लिए केवल console.log जोड़ा, समस्या यह है कि कुकीज़ हमेशा खाली होती हैं {} मैं कुकीज़ का उपयोग कर सेट करता हूं क्लाइंट जेएस कॉल करता है और वे सहेजते हैं लेकिन किसी कारण से, मैं उन्हें सर्वर की तरफ नहीं ले सकता।फायरबेस क्लाउड फ़ंक्शन "__session" के अलावा नामित कुकी स्टोर नहीं करेगा

यहाँ, index.js का पूरा कोड है यह वास्तव में नमूना के रूप में ही है:

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

दुकान कुकी:

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

की दुकान नहीं है:

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

उत्तर

10

यदि आप फाई का उपयोग कर रहे हैं होस्टिंग + क्लाउड फ़ंक्शंस को रीबेस करें, __session एकमात्र कुकी है जिसे आप डिज़ाइन करके स्टोर कर सकते हैं। हमारे लिए सीडीएन पर कुशलतापूर्वक कैश सामग्री को सक्षम करने में सक्षम होना आवश्यक है - हम __session के अलावा अनुरोध से सभी कुकीज़ को स्ट्रिप करते हैं। इसे दस्तावेज किया जाना चाहिए लेकिन ऐसा नहीं लगता है (ओह!)। हम इस सीमा को दर्शाने के लिए दस्तावेज़ीकरण अपडेट करेंगे।

+0

मुझे बताने के लिए धन्यवाद। हाँ, एक अच्छा प्रलेखन मुझे 2 दिन बचा सकता है ... मुझे उम्मीद है कि आप कई कुकीज़ के लिए समर्थन की अनुमति देंगे क्योंकि यह प्रत्येक आधुनिक साइट के लिए बहुत जरूरी है जो विश्लेषण, विज्ञापन, ट्रैकिंग आदि का उपयोग करता है ... –

+0

नोट: आप क्लाउड फ़ंक्शंस का उपयोग करके कुकीज़ सेट कर सकते हैं, और आप बिना किसी समस्या के क्लाइंट-साइड जावास्क्रिप्ट ** ** को सेट और पुनर्प्राप्त कर सकते हैं। यह केवल * सर्वर पर * है कि आप '__ सत्र 'तक ही सीमित हैं। इसे एनालिटिक्स, विज्ञापन इत्यादि को प्रभावित नहीं करना चाहिए –

+1

हाँ, लेकिन आपको आमतौर पर सर्वर की ओर से कुकीज़ तक पहुंचने की आवश्यकता है। मुझे कैशिंग प्रतिबंध मिलता है लेकिन आपके पास 'firebase.json' config फ़ाइल या आपके पास मौजूद कुकी नामों को घोषित करना अच्छा हो सकता है ताकि आप एक से अधिक हो सकें। –

संबंधित मुद्दे