Nodejs 如何做记录上一页的URL

Nodejs 如何做记录上一页的URL

如何做上一页的记录。本页操作后跳转会上个URL 现了解是地址栏增加一个参数。记录到页面。提交时候带上。除了这个方法还有其他办法吗?

5 回复

当然可以!记录上一页的 URL 是一个常见的需求,尤其是在处理表单提交、页面导航或者用户行为跟踪时。以下是一些实现该功能的方法,并附有示例代码。

方法一:使用 URL 参数

你提到的方法之一是在地址栏中增加一个参数来记录上一页的 URL。这种方法可以通过在重定向时将当前页面的 URL 作为参数传递给目标页面来实现。

示例代码:

// 在需要记录上一页 URL 的地方
const previousUrl = req.get('Referer'); // 获取请求头中的 Referer 字段
res.redirect(`/next-page?previousUrl=${encodeURIComponent(previousUrl)}`);

// 在目标页面(例如 `/next-page`)中读取参数
app.get('/next-page', (req, res) => {
    const previousUrl = decodeURIComponent(req.query.previousUrl);
    res.send(`You came from: ${previousUrl}`);
});

方法二:使用会话存储

另一种方法是使用会话存储(如 express-session),将上一页的 URL 存储在用户的会话中。

示例代码:

  1. 安装 express-session

    npm install express-session
    
  2. 使用会话存储上一页 URL:

    const express = require('express');
    const session = require('express-session');
    
    const app = express();
    app.use(session({
        secret: 'your_secret_key',
        resave: false,
        saveUninitialized: true
    }));
    
    app.get('/current-page', (req, res) => {
        const previousUrl = req.get('Referer');
        if (previousUrl) {
            req.session.previousUrl = previousUrl;
        }
        res.send('Current page content');
    });
    
    app.get('/next-page', (req, res) => {
        const previousUrl = req.session.previousUrl || 'No previous page';
        res.send(`You came from: ${previousUrl}`);
    });
    
    app.listen(3000, () => console.log('Server running on port 3000'));
    

方法三:使用 Cookie 存储

你也可以使用 Cookie 来存储上一页的 URL。这种方法适合不需要服务器端存储的情况。

示例代码:

  1. 安装 cookie-parser

    npm install cookie-parser
    
  2. 使用 Cookie 存储上一页 URL:

    const express = require('express');
    const cookieParser = require('cookie-parser');
    
    const app = express();
    app.use(cookieParser());
    
    app.get('/current-page', (req, res) => {
        const previousUrl = req.get('Referer');
        if (previousUrl) {
            res.cookie('previousUrl', previousUrl, { maxAge: 900000, httpOnly: true });
        }
        res.send('Current page content');
    });
    
    app.get('/next-page', (req, res) => {
        const previousUrl = req.cookies.previousUrl || 'No previous page';
        res.send(`You came from: ${previousUrl}`);
    });
    
    app.listen(3000, () => console.log('Server running on port 3000'));
    

以上三种方法都可以实现记录上一页 URL 的功能。你可以根据具体的应用场景选择最适合的一种。


HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的。

很实用哦。

  1. 如果你是在百度搜索 ‘如何做记录上一页的URL’ 进入本帖的, 你会发现 Referer 是百度的链接
  2. 如果你是直接从cnodejs 进入的, 你会发现…

好啦,你知道怎么做了。

谢谢。。麻烦问下。A-B-C 如何从C跳转到A

cookie,session也行啊

为了记录用户访问的上一页 URL,可以使用以下几种方法:

  1. 使用浏览器的 document.referrer 属性。
  2. 在服务器端通过请求头中的 Referer 字段获取。

方法一:使用 document.referrer

这种方法不需要服务器端的支持,只需前端 JavaScript 进行处理即可。document.referrer 会包含上一个页面的 URL,你可以在客户端存储这个值,并在提交表单时将它发送给服务器。

示例代码:

<!-- 假设这是你的 HTML 表单 -->
<form id="myForm" action="/submit" method="POST">
    <input type="text" name="data" />
    <button type="submit">提交</button>
</form>

<script>
document.getElementById('myForm').addEventListener('submit', function (event) {
    // 将上一个页面的 URL 存储在隐藏字段中
    var hiddenField = document.createElement('input');
    hiddenField.type = 'hidden';
    hiddenField.name = 'referrerUrl';
    hiddenField.value = document.referrer;
    
    this.appendChild(hiddenField);
});
</script>

在服务器端接收这个值:

// Node.js 后端代码
app.post('/submit', (req, res) => {
    const referrerUrl = req.body.referrerUrl;
    console.log(`Referrer URL: ${referrerUrl}`);
    // 处理表单数据
});

方法二:服务器端记录

这种方法需要服务器端的支持。当你接收到请求时,可以通过检查请求头中的 Referer 字段来获取上一个页面的 URL。

示例代码:

const express = require('express');
const app = express();

app.use((req, res, next) => {
    const referer = req.headers.referer;
    // 你可以将 referer 存储到 session 或数据库中
    req.session.prevUrl = referer;
    next();
});

app.get('/', (req, res) => {
    res.send(`上一页的 URL 是:${req.session.prevUrl}`);
});

app.listen(3000, () => {
    console.log('服务器运行在 http://localhost:3000');
});

这两种方法都可以实现记录上一页 URL 的功能,选择哪种方法取决于你的具体需求和应用架构。

回到顶部