Nodejs 模拟登录

发布于 1周前 作者 htzhanglong 来自 nodejs/Nestjs

Nodejs 模拟登录
nodejs 模拟登录后是 302 页面 如何处理?

10 回复

这重定向不是你说了算的啊


没记错的话 request https://github.com/request/request 是自动跟踪重定向的。自己用 http 模块的话,可以先请求一次,如果是 302 就根据返回的 location 再请求。禁止重定向是不可能的。

重定向是 nginx 说了算

https://github.com/request/request
项目首页就有说 followRedirect 的设置,也太水了

302 证明你的模拟登录没伪装好呗
跟 nodejs 没啥关系

#5 不排除登录成功后有 302 行为

为啥要禁止重定向,就算没模拟好,禁止重定向也不解决问题。
如果成功的模拟了登录,那也得重定向才能拿到你想要的数据啊。

登录后 302 说明已经禁止重定向了

当然,以下是一个简单的 Node.js 示例,用于模拟登录功能。为了简化说明,假设我们有一个简单的 API 端点 /login,它接受 usernamepassword 字段作为 POST 请求的 body,并返回登录状态。

首先,你需要安装 axiosexpress 这两个 npm 包:

npm install axios express body-parser

然后,创建一个简单的服务器和登录模拟代码:

const express = require('express');
const bodyParser = require('body-parser');
const axios = require('axios');

const app = express();
app.use(bodyParser.json());

const mockLoginEndpoint = 'https://example.com/api/login'; // 假设这是你的登录API

app.post('/login', async (req, res) => {
    const { username, password } = req.body;

    try {
        const response = await axios.post(mockLoginEndpoint, {
            username,
            password
        });

        if (response.data.success) {
            res.status(200).json({ message: 'Login successful', token: response.data.token });
        } else {
            res.status(401).json({ message: 'Invalid credentials' });
        }
    } catch (error) {
        res.status(500).json({ message: 'Error during login', error: error.message });
    }
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

在这个示例中,/login 路由会处理 POST 请求,并通过 axios 将请求转发到模拟的登录 API。根据 API 的响应,它会返回相应的登录结果。请确保将 mockLoginEndpoint 替换为实际的登录 API 端点。

回到顶部