使用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
相关产品推荐
相关产品推荐

