Ajax 中的相对路径在不同环境中的工作方式不同
Relative path in Ajax works differently in different environment
这是一个SpringBoot网站。 html页url是http://xxxxx/trex/index/和javascript索引页中的代码段如下
$(function(){
jQuery.ajax({
contentType:'application/json;charset=UTF-8',
type: "POST",
url: "getSignTypes",
cache: false,
dataType: "json",
success:function(data){
if(data !== 'NA'){
console.log(data);
$('#signType').combobox({
valueField:'id',
textField:'title',
editable:false,
data:data,
value:data[0].id
});
}
},
error:function(msg){
console.log(msg)
}
});
})
你可以看到我在这个ajax请求的url参数中使用了相对路径。我猜既然是相对的url,就应该转换成http://xxxxx/trex/index/getSignTypes. I test it in my local, and yes, it is as expected http://localhost:8088/trex/index/getSignTypes。
但是当我部署到UAT时,我发现url被转换成了http://hswcfc-trainexp-web.uat.homecreditcfc.cn/trex/getSignTypes。索引部分不见了。
为什么 Ajax 中的相对路径在不同的环境中有不同的作用? ajax 代码完全一样。我可以找到任何线索来找出不同之处吗?谢谢。
我通过了这里的 UAT 屏幕截图。
一个 HTTP URL 由几个部分组成:协议、主机名、端口、用户名、密码、路径、查询字符串 (?....
) 和片段 (#....
)。
正如所怀疑的那样,您的 URL path 在 dev 中以 /
结尾,但在 UAT 中没有。把它想象成"directories":/trex/index/
是/trex/index
目录中的空文件名,而/trex/index
是/trex
目录中的文件index
。 Web 服务器通常以相同的方式对待这两者,但客户端不会:当你从那里做一个相对路径时,你在第一种情况下得到 /trex/index/getSignTypes
,但在第二种情况下得到 /trex/getSignTypes
。
这通常通过创建重定向规则来解决,这样您就不会意外地以两种不同的方式写入相同的 URL(例如,通过将 /trex/index
重定向到 /trex/index/
)。
这是一个SpringBoot网站。 html页url是http://xxxxx/trex/index/和javascript索引页中的代码段如下
$(function(){
jQuery.ajax({
contentType:'application/json;charset=UTF-8',
type: "POST",
url: "getSignTypes",
cache: false,
dataType: "json",
success:function(data){
if(data !== 'NA'){
console.log(data);
$('#signType').combobox({
valueField:'id',
textField:'title',
editable:false,
data:data,
value:data[0].id
});
}
},
error:function(msg){
console.log(msg)
}
});
})
你可以看到我在这个ajax请求的url参数中使用了相对路径。我猜既然是相对的url,就应该转换成http://xxxxx/trex/index/getSignTypes. I test it in my local, and yes, it is as expected http://localhost:8088/trex/index/getSignTypes。
但是当我部署到UAT时,我发现url被转换成了http://hswcfc-trainexp-web.uat.homecreditcfc.cn/trex/getSignTypes。索引部分不见了。
为什么 Ajax 中的相对路径在不同的环境中有不同的作用? ajax 代码完全一样。我可以找到任何线索来找出不同之处吗?谢谢。
我通过了这里的 UAT 屏幕截图。
一个 HTTP URL 由几个部分组成:协议、主机名、端口、用户名、密码、路径、查询字符串 (?....
) 和片段 (#....
)。
正如所怀疑的那样,您的 URL path 在 dev 中以 /
结尾,但在 UAT 中没有。把它想象成"directories":/trex/index/
是/trex/index
目录中的空文件名,而/trex/index
是/trex
目录中的文件index
。 Web 服务器通常以相同的方式对待这两者,但客户端不会:当你从那里做一个相对路径时,你在第一种情况下得到 /trex/index/getSignTypes
,但在第二种情况下得到 /trex/getSignTypes
。
这通常通过创建重定向规则来解决,这样您就不会意外地以两种不同的方式写入相同的 URL(例如,通过将 /trex/index
重定向到 /trex/index/
)。