为了账号安全,请及时绑定邮箱和手机立即绑定

Ajax 中的相对路径在不同环境中的工作方式不同

Ajax 中的相对路径在不同环境中的工作方式不同

动漫人物 2022-11-30 13:30:11
这是一个 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。我在本地测试它,是的,它符合预期http://localhost:8088/trex/index/getSignTypes。但是当我将它部署到UAT时,我发现url被转换为http://hswcfc-trainexp-web.uat.homecreditcfc.cn/trex/getSignTypes。索引部分不见了。为什么 Ajax 中的相对路径在不同的环境中工作方式不同?ajax 代码完全相同。我可以找到任何线索来找出不同之处吗?谢谢。我通过了此处的 UAT 屏幕截图。
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

一个 HTTP URL 由几个部分组成:协议、主机名、端口、用户名、密码、路径、查询字符串 ( ?....) 和片段 ( #....)。

正如所怀疑的那样,您的 URL路径以 dev结尾/,而不是以 UAT 结尾。把它想象成“目录”:/trex/index/是目录中的空文件名,而是/trex/index目录中/trex/index的文件。Web 服务器通常以相同的方式对待这两种情况,但客户端不会:当您从那里执行相对路径时,您会遇到第一种情况,但会遇到第二种情况。index/trex/trex/index/getSignTypes/trex/getSignTypes

这通常通过创建重定向规则来解决,这样您就不会意外地以两种不同的方式编写相同的 URL(例如,通过重定向/trex/index/trex/index/)。


查看完整回答
反对 回复 2022-11-30
  • 1 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信