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

window.location.href跳转异常:返回链接拼接在域名后而非替换

问题原因与解决方案

核心原因

你遇到的问题是API返回的URL字符串包含多余的双引号(或前后空白/换行符),导致window.location.href将其识别为相对路径,而非绝对URL。

举个例子:如果API实际返回的是"https://returnedurl.com/"(带外层双引号),而非纯https://returnedurl.com/,那么赋值给window.location.href时,浏览器会把带引号的字符串当作相对路径,拼接到当前域名后,就出现了https://mywebsitedomain.com/"https://returnedurl.com/"这种错误路径。

而你手动赋值时,是直接输入了不带引号的纯URL,所以能正常跳转。

解决方案

1. 先确认API返回的实际内容

打开浏览器开发者工具的「Network」面板,找到这个POST请求,查看「Response」标签页,确认返回的文本是否带有双引号、空格或换行符。

2. 针对性修复代码

根据API返回的格式,选择以下两种方式之一:

方式一:如果API返回的是JSON格式的字符串(比如"https://xxx.com")

将response.text()改为response.json(),JSON解析会自动去掉外层的引号:

try {
  const response = await fetch(url, requestOptions);
  const data = await response.json(); // 改用json()解析
  window.location.href = data;
} catch (error) {
  console.error("Error:", error);
}

方式二:如果API确实返回带引号的纯文本

手动清理字符串,去除前后的引号和空白字符:

try {
  const response = await fetch(url, requestOptions);
  let data = await response.text();
  // 去掉前后空白 + 去除首尾的双引号
  data = data.trim().replace(/^"|"$/g, '');
  window.location.href = data;
} catch (error) {
  console.error("Error:", error);
}

3. 验证修复效果

可以在赋值前添加一行打印,确认清理后的URL是否正确:

console.log('清理后的URL:', data);

内容的提问来源于stack exchange,提问作者Rox AS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:50:54