我执行以下操作:
var headers = new Headers();
headers.append("bunny", "test");
headers.append("rabbit", "jump");
fetch("blahurl.com/someservice", {headers:headers})
在firebase结束时:
export const listener = functions.https.onRequest(async (req, res) => {
for (let entry of req.rawHeaders) {
console.log(entry); // here I see a 'bunny,rabbit' get printed somewhere
}
//However this yields undefined:
req.headers.bunny
不确定如何获取标头值,我只是有标题......
答案 0 :(得分:2)
答案 1 :(得分:1)
我在搜索&#34时发现了这个答案; firebase请求标头未定义"。
<强>问题强>
我已经编写了一个firebase函数(使用Node JS)。该帖子包括标题为&#34; user_token&#34;的标题。在我的代码中,我检索了这样的标头值:
const userToken = request.header("user_token");
我使用Firebase CLI服务器(firebase serve
)在本地计算机上测试了此代码,并且运行正常。
但是,一旦我将此代码(firebase deploy
)部署到我的Firebase帐户,我就遇到了问题。将完全相同的标题键/值发布到我的Firbase网址时,由于userToken
值为undefined
,我收到了错误。
<强>解决方案强>
最终,将我的代码更改为以下内容解决了我的问题:
const userToken = request.get("x-user-token");
@Pen的回答帮助我指出了正确的方向。最初,我只是将代码更改为:
const userToken = request.get("user_token");
不幸的是,我仍然以未定义的userToken值结束。查看Parsing HTTP requests documentation,我注意到他们的示例标题值键以&#34; x - &#34;开头。从&#34; user_token&#34;更新我的标题值键to&#34; x-user-token&#34;做了伎俩。
答案 2 :(得分:1)
如果仍然有同样的问题,这是解决打字稿的方法:
首先解决CORS问题:
import * as cors from 'cors';
const corsHandler = cors({origin: true});
export const getmBucksShop = functions.https.onRequest((request, response) => {
corsHandler(request, response, () => {
//Access Header Values here
//Your Code Here
});
});
不起作用:
console.error(request.headers.authorization);
可以工作:
console.error(request.headers['authorization']);
console.error(request.get("authorization"));
使用此依赖项:
"dependencies": {
"cookie-parser": "^1.4.3",
"cors": "^2.8.5",
"express": "^4.16.4",
"firebase-admin": "~6.0.0",
"firebase-functions": "^2.1.0"
},
答案 3 :(得分:0)
看起来这个问题与cors有关,所以将函数体转移到它中就像这样:
const cors = require('cors')({ origin: true });
export const listener = functions.https.onRequest(async (req, res) => {
cors(req, res, () => {
然后cookie开始正确显示......
我不完全确定为什么,这不是一个响应,它只是一个请求。