5

私はauthorized-https-endpointのサンプルをたどり、req.cookiesを印刷するためにconsole.logを追加しました。問題はクッキーは常に空です{}クライアントのJS呼び出しは保存されますが、何らかの理由でサーバー側で取得できません。ここfirebaseクラウド機能は "__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

Fiを使用している場合rebaseホスティング+クラウド機能、__sessionは、設計上保存できる唯一のクッキーです。これは、CDNのコンテンツを効率的にキャッシュできるようにするために必要です。__session以外のすべてのCookieを削除します。これは文書化する必要がありますが、(oops!)ではありません。この制限を反映するためにドキュメントを更新します。

+0

私にお知らせいただきありがとうございます。ええ、良いドキュメントは2日間私を救ったでしょう...私は本当にあなたが分析、広告、追跡などを使用するすべての現代的なサイトのためにかなり必要なので、複数のクッキーのサポートを許可することを願って... –

+0

注:クラウド機能を使用してクッキーを設定することができ、クライアント側のJavaScript **で問題なく設定および取得することができます。あなたは '__session'に制限されているのは*だけです。アナリティクス、広告などには影響しません。 –

+1

ええ、通常はサーバー側からもCookieにアクセスする必要があります。キャッシュの制限がありますが、 'firebase.json'設定ファイルなどにあるCookie名を宣言して、複数のファイルを持つことができます。 –

関連する問題