You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中获取URL中#后的access_token参数

如何在Node.js/Express中获取URL哈希(#)后的access_token参数

你当前的代码尝试通过req.query["#access_token"]获取URL哈希后的参数,但这行不通——浏览器不会将URL中#之后的哈希片段发送到服务器,所以后端的req.query里根本不会包含这部分数据。比如你提供的URLexample.com/#access_token=asdad32423&somethingelse=1232,服务器收到的请求路径只有/,完全看不到#后的内容。

解决方案

哈希片段仅存在于浏览器端,必须先在前端解析这部分参数,再传递给后端(如果需要后端处理的话)。

步骤1:前端解析哈希参数

通过浏览器的window.location.hash获取哈希部分,再解析为键值对:

// 前端页面中的脚本(比如内嵌在HTML的<script>标签)
function parseHashParams() {
  // 去掉哈希开头的#字符
  const hashContent = window.location.hash.slice(1);
  // 用URLSearchParams解析参数
  const params = new URLSearchParams(hashContent);
  const accessToken = params.get('access_token');

  // 将解析到的token传给后端
  fetch('/save-token', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ accessToken }),
  })
  .then(res => res.json())
  .then(data => console.log('Token处理完成:', data))
  .catch(err => console.error('请求出错:', err));
}

// 页面加载时执行解析逻辑
window.onload = parseHashParams;

步骤2:后端接收并处理参数

修改你的Express代码,添加POST接口接收前端传递的token,同时修复原代码中遗漏的express引入问题:

const express = require("express");
const cookieParser = require("cookie-parser");
const app = express();
const port = 4000;

// 解析JSON格式的请求体
app.use(express.json());
app.use(cookieParser());

// 返回包含前端脚本的页面(根据实际路径调整)
app.get("/", (req, res) => {
  res.sendFile(__dirname + '/index.html');
});

// 接收前端传递的token并写入cookie
app.post("/save-token", (req, res) => {
  const accessToken = req.body.accessToken;
  if (accessToken) {
    // 建议添加httpOnly属性提升cookie安全性
    res.cookie("access_token", accessToken, { httpOnly: true, maxAge: 3600000 });
    res.json({ success: true, message: 'Token已存入cookie' });
  } else {
    res.status(400).json({ success: false, message: '未获取到access_token' });
  }
});

app.listen(port, () => {
  console.log(`服务运行在端口 ${port}`);
});

额外提示

如果你的场景是OAuth授权回调,部分服务提供商支持通过设置response_mode=query,让access_token通过?后的URL参数返回,这种情况下后端可以直接用req.query.access_token获取,无需前端中转。

内容的提问来源于stack exchange,提问作者mmz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:15:34