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

使用jQuery发送AJAX GET请求返回404,URL被篡改求助

解决jQuery AJAX请求URL被篡改导致404的问题

看起来你的AJAX请求URL被意外拼接成了当前页面路径加上目标URL的奇怪组合,这通常是路径拼接逻辑出错或者变量值不符合预期导致的。我们一步步来排查修复:

问题根源分析

从错误信息里的URL:http://0.0.0.0:5000/video/:%20http://0.0.0.0:5000/status/80140376-2881-4215-87c2-0265eae09a6e 能看出几个关键问题:

  • 你的页面当前路径是/video/
  • 拼接后的URL里出现了:%20(也就是: ,冒号加空格),说明$SCRIPT_ROOT变量的值可能包含多余的符号或空格,和statusURL拼接后产生了无效路径
  • 更重要的是,statusURL本身已经是完整的绝对URL,这种情况下根本不需要和$SCRIPT_ROOT拼接

修复方案

方案1:直接使用完整的statusURL(最推荐)

既然statusURL已经是有效的绝对URL,跳过$SCRIPT_ROOT的拼接,直接把它作为AJAX的url参数:

$.ajax({
  url: statusURL,
  method: "GET",
  success: successCheckJobStatus
});

方案2:检查并修正$SCRIPT_ROOT的值

如果你确实需要使用路径拼接,先确认$SCRIPT_ROOT的实际值:

console.log("$SCRIPT_ROOT的值:", $SCRIPT_ROOT);
  • 如果它是多余的内容(比如包含冒号、空格或者错误的路径),修正这个变量的赋值逻辑
  • 如果它是有效的基础路径(比如"/"),确保和statusURL拼接前先去除两边的空格:
let path = $SCRIPT_ROOT.trim() + statusURL.trim();
$.ajax({
  url: path,
  method: "GET",
  success: successCheckJobStatus
});

方案3:使用URL构造器确保路径正确

用原生的URL构造函数来处理路径拼接,避免手动拼接的错误:

// 第二个参数是基础URL,第一个是相对路径或绝对URL
let targetUrl = new URL(statusURL, $SCRIPT_ROOT).href;
$.ajax({
  url: targetUrl,
  method: "GET",
  success: successCheckJobStatus
});

这个方法会自动处理绝对URL和相对路径的拼接逻辑,不会出现奇怪的组合。

额外提示

  • 永远要确认拼接前每个变量的实际值,不要想当然认为它们符合预期
  • 如果你的后端接口支持相对路径,优先使用相对路径(比如/status/xxx),这样可以避免环境切换时的URL问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:00:50