URL包含#键之后的所有查询字符串 http://localhost:3002/callback#access_token=nQevH_hZSjs3qdOoLNnAIITwqd3lCdkq&expires_in=7200&token_type=Bearer
如何在#
之后访问参数答案 0 :(得分:1)
var url = 'http://localhost:3002/callback#access_token=nQevH_hZSjs3qdOoLNnAIITwqd3lCdkq&expires_in=7200&token_type=Bearer';
function getUrlParameter(name) {
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
var regex = new RegExp('[\\#&]' + name + '=([^&#]*)');
var results = regex.exec(url);
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
};
console.log(getUrlParameter('access_token'));
console.log(getUrlParameter('expires_in'));
console.log(getUrlParameter('token_type'));
答案 1 :(得分:0)
浏览器不会将#
之后的任何内容发送到服务器。您可以
仅在URL是从服务器生成或获得的情况下解析它。然后,您可以使用节点内置的url
模块来解析url中的符号
答案 2 :(得分:0)
您可以使用substring()方法: 编辑:您可以从response.body获得的字符串。您必须使用body-parser或express.json
let str = "http://localhost:3002/callback#access_token=nQevH_hZSjs3qdOoLNnAIITwqd3lCdkq&expires_in=7200&token_type=Bearer";
let index=str.indexOf("#");
let res = str.substring(index+1);
输出:
$ node server.js
access_token=nQevH_hZSjs3qdOoLNnAIITwqd3lCdkq&expires_in=7200&token_type=Bearer
答案 3 :(得分:0)
最佳做法是使用?
而不是#
因此您的网址应为
现在您可以使用以下方法获取查询参数
var express = require('express');
var app = express();
app.get('/callback', function(req, res){
console.log('access_token: ' + req.query.access_token);
console.log('expires_in: ' + req.query.expires_in);
console.log('token_type: ' + req.query. token_type);
});
app.listen(3000);