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

多语言子域名支持场景下Node.js HTTPS请求路径转义错误求助

解决请求路径包含未转义字符的问题

我来帮你搞定这个问题!你遇到的request path contains unescaped characters错误,核心原因是你错误地对整个请求路径做了URL编码,这会把路径里的/、?、&这些关键分隔符也转义掉,导致服务器无法识别正确的请求结构。

问题分析

你之前的代码里,把整个path变量用encodeURIComponent()处理了,比如原本的/TakenSubdomains.json?orderBy=...会被转成%2FTakenSubdomains.json%3ForderBy%3D...,这显然不是服务器期望的路径格式。正确的做法应该是只编码查询参数中的动态值(也就是你从Punycode转成Unicode的子域名,以及可能包含特殊字符的firebaseAuthToken),而路径的固定结构部分保持原样。

修正后的代码

const punycode = require('punycode');
const https = require('https');

// 1. 先解码子域名到Unicode格式
const decodedName = punycode.toUnicode(name);
// 2. 仅对这个动态值做URL编码,处理非ASCII字符
const encodedName = encodeURIComponent(decodedName);
// 3. 对Auth Token也做编码(避免特殊字符破坏请求结构)
const encodedAuthToken = encodeURIComponent(firebaseAuthToken);

// 4. 构建路径,只插入编码后的动态值,固定结构保持原样
const path = `/TakenSubdomains.json?orderBy="insensitiveName"&equalTo="${encodedName}"&limitToFirst=1&timeout=10s&auth=${encodedAuthToken}`;

var options = {
  method: "GET",
  hostname: host,
  path: path, // 这里不再对整个path编码!
  headers: {},
  maxRedirects: 20,
};

return new Promise((resolve, reject) => {
  var req = https.request(options, function (res) {
    var chunks = [];
    res.on("data", function (chunk) {
      chunks.push(chunk);
    });
    res.on("end", function () {
      var body = Buffer.concat(chunks);
      try {
        const json = JSON.parse(body.toString());
        resolve(json);
      } catch (parseError) {
        // 新增JSON解析异常处理,避免程序崩溃
        reject(parseError);
      }
    });
    res.on("error", function (error) {
      console.error(error);
      reject(error);
    });
  });
  req.end();
});

关键注意点

  • 仅编码动态参数:URL编码的作用是转义参数里的非ASCII字符或特殊字符(比如Unicode、空格、&、=等),但路径的结构字符(/、?、&)必须保持原样,否则服务器无法解析请求。
  • 修复引号转义:你原代码里的"是HTML转义字符,在JavaScript字符串里直接用双引号即可,不需要额外转义(也可以用单引号包裹整个字符串,内部用双引号,避免混淆)。
  • 增强鲁棒性:新增了JSON解析的try-catch块,避免遇到非JSON响应时程序直接崩溃。

这样修改后,你的请求路径就会正确包含编码后的Unicode子域名,同时保持路径结构的合法性,服务器就能正常处理请求了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 12:52:47