链接丢失HTTP://前缀致404错误,求助排查MVC/HTML原因
解决外部URL跳转时HTTP://被自动删除导致404的问题
我来帮你排查这个问题——你遇到的http://被自动移除、最终返回404的情况,大概率是MVC框架的路由/URL处理机制在起作用,和HTML本身关系不大。下面给你几个具体的排查和解决方向:
检查MVC框架的路由配置
多数MVC框架(比如ASP.NET MVC、Spring MVC等)自带URL重写或路由规则,可能会把外部链接误识别为内部路由,自动移除协议头。你可以去项目的路由配置文件里看看,有没有强制将链接转为相对路径、或者对URL做自动格式化的规则,这类设置很可能是问题根源。换一种绝对路径写法尝试
你可以试试用协议相对路径的写法,也就是把http://换成//,比如:<a href="//18.217.228.108/angularapp1/book/"> Class Books </a>这种写法会自动继承当前页面的访问协议(http/https),同时能避开框架对完整协议头的误处理。另外也可以用JS生成链接,绕开框架的URL拦截:
document.getElementById('bookLink').href = 'http://18.217.228.108/angularapp1/book/';排查页面的全局链接拦截脚本
有时候页面里的自定义JS或第三方库会拦截<a>标签的点击事件,对URL做二次修改。你可以打开浏览器开发者工具,检查页面的JS代码,看看有没有修改href属性、或者在点击时重写URL的逻辑。验证服务器端的最终输出
右键页面查看源代码,确认最终输出到浏览器的<a>标签href属性是不是已经丢失了http://:如果源代码里就没有,那肯定是MVC框架在渲染页面时修改了链接;如果源代码正常但实际访问地址不对,那就是前端脚本的问题。
内容的提问来源于stack exchange,提问作者Curious-programmer
相关产品推荐
相关产品推荐

