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

为什么http请求的req.url拆分后返回两个数组而非一个?

问题成因
  • 浏览器访问任意HTTP服务时,都会默认自动发起一个获取站点图标的请求,对应路径为/favicon.ico。该路径用/拆分后得到的数组为[ '', 'favicon.ico' ],不存在下标为3的元素。
  • 你的代码没有对请求路径做任何过滤,对所有进入的请求都统一执行request[3].split('+')操作。当处理favicon请求时,request[3]的值为undefined,对undefined调用split方法就会抛出类型错误。
  • 额外注意:你贴出的代码末尾多了一个多余的闭合大括号,属于语法错误,也会导致服务无法正常启动。
修复方案

你可以按以下要求修改代码,全程不会用到URL模块,符合导师的限制规则:

  1. 先过滤掉favicon.ico的无效请求
  2. 对路径拆分后的数组长度做校验,确认需要的下标存在后再执行后续操作
  3. 删除多余的语法错误符号

修复后的参考代码:

let http = require('http');
http.createServer(function (req, res) {
    // 过滤favicon无效请求
    if (req.url === '/favicon.ico') {
        res.end();
        return;
    }
    let request = req.url.split('/');
    // 校验数组长度,确保下标3的元素存在
    if (request.length >= 4 && request[3]) {
        let splitResult = request[3].split('+');
        console.log('拆分结果:', splitResult);
    }
    console.log('路径拆分数组:', request);
}).listen(5000);

内容的提问来源于stack exchange,提问作者random math student

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:27:04