Nodejs新人-问下怎么获取当前地址栏上的url

Nodejs新人-问下怎么获取当前地址栏上的url

新人-问下nodejs怎么获取当前地址栏上的url,请大神们勿喷!

10 回复

新人-问下nodejs怎么获取当前地址栏上的url,请大神们勿喷!


req.connection.remoteAddress;

当然可以。针对这个问题,我们可以使用Node.js中的内置模块urlhttp来实现获取当前访问的URL。下面我将提供一个简单的示例代码,并解释其工作原理。

示例代码

首先,确保你已经安装了Node.js环境。然后,你可以创建一个新的JavaScript文件(例如 server.js),并在其中添加以下代码:

const http = require('http');
const url = require('url');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
    // 获取请求的完整URL
    const fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
    
    // 使用url模块解析URL
    const parsedUrl = url.parse(fullUrl);
    
    console.log("Full URL: ", fullUrl);
    console.log("Parsed URL: ", parsedUrl);

    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello World\n');
});

server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);
});

解释

  1. 引入模块:

    • http: 用于创建HTTP服务器。
    • url: 提供处理URL的功能。
  2. 创建服务器:

    • 使用http.createServer()方法创建一个HTTP服务器。
    • 该服务器监听指定的端口(这里是3000)和主机名(这里是本地回环地址127.0.0.1)。
  3. 处理请求:

    • 在服务器的回调函数中,我们通过req.protocol, req.get('host')req.originalUrl 来构建完整的URL。
      • req.protocol 获取协议(通常是http:https:)。
      • req.get('host') 获取请求的主机名和端口号。
      • req.originalUrl 获取路径和查询字符串。
    • 然后使用url.parse()方法解析完整的URL,返回一个对象,包含URL的不同部分(如protocol, hostname, pathname等)。
  4. 响应客户端:

    • 设置HTTP状态码为200,并设置响应头。
    • 发送纯文本响应"Hello World"。
  5. 启动服务器:

    • 使用server.listen()方法让服务器开始监听指定的端口和主机名。

这样,当你访问这个服务器时,它会在控制台输出请求的完整URL以及解析后的URL信息。希望这对你有所帮助!

[@MiguelValentine](/user/MiguelValentine) 谢谢,这样只取到了域名 没有端口和后面的东西!

用Express的话,就是 req.originalUrl

最简单粗暴的办法,把req对象输出,然后用你的火眼金睛去瞄一遍,最好是使用util.inspects多深入几层属性

回答

在Node.js中,如果你想获取当前地址栏上的URL,通常是在服务器端处理HTTP请求时使用。例如,如果你有一个Express应用,你可以通过req对象来获取当前请求的URL。

以下是一个简单的示例:

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

app.get('/', (req, res) => {
    // 获取当前请求的完整URL
    const fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
    console.log(fullUrl);  // 打印完整的URL
    res.send(`当前请求的URL是: ${fullUrl}`);
});

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

在这个例子中:

  • req.protocol 获取协议(http 或 https)。
  • req.get('host') 获取主机名和端口。
  • req.originalUrl 获取请求的路径及查询字符串。

将这些部分组合起来,就可以得到完整的URL。

请注意,这段代码只能在服务器端运行,并且只有当有客户端请求到达服务器时才会打印或返回当前请求的URL。如果你需要在客户端(浏览器端)获取当前页面的URL,你应该使用JavaScript的window.location.href

希望这个回答对你有帮助!

回到顶部