express.js request.query is empty



我有来自谷歌OAuth2的重定向URL,http://localhost:997/?#state=pass-through%20value&access_token=ya29.ImC6B1g9LYsf5siso8n_UphOFB0SXc5dqsm6LqHRWXbtNHisEblxjeLoYtGgwSVtCTGxOjjODiuTyH7VCHoZCEfUd_&token_type=Bearer&expires_in=3599&scope=https://www.googleapis.com/auth/youtube.readonly

当我想从中获取access_token时,问题就出现了。

var express = require('express'),
app = express(),
port = process.env.PORT || 997;
app.get("/", (req, res, next) => {
console.log(req.query);
res.send("hi");
});
app.get("/url", (req, res, next) => {
res.json('test');
});
app.listen(port, ()=>{
console.log("Server on port: " + port);
});

现场后输出:

`[nodemon] starting `node main.js`
Server on port: 997
{}

删除#state=pass-through%20value后,链接看起来http://localhost:997/?&access_token=ya29.Il-6B4zOwiM7bLeWcyJX9iQGuj3lCGU-6lbnJWdxqcPkBCMkUf8P2xxwMUrFjI-mNNT-X8QEBxA18p1IXsGS5wjiscVMv&token_type=Bearer&expires_in=3599&scope=https://www.googleapis.com/auth/youtube.readonly,它工作正常,并且输出是直截的。有人知道我做错了什么吗?

从请求中删除#。因为#之后,签名网址不会被措辞#符号通常用于表示特定DOM element id

你的URL应该是这样的,

http://localhost:997/?state=pass-through%20value&access_token=ya29.ImC6B1g9LYsf5siso8n_UphOFB0SXc5dqsm6LqHRWXbtNHisEblxjeLoYtGgwSVtCTGxOjjODiuTyH7VCHoZCEfUd_&token_type=Bearer&expires_in=3599&scope=https://www.googleapis.com/auth/youtube.readonly

另请参阅此质量保证


如果你想#通过Dom element id,你应该在url结束时使用它

?param=sasad&param2=adsasa#my_element

如果#是参数的一部分,则应将其编码为%23.。您应该在发布请求正文中发送它

最新更新