JavaScript无协议跳转至IP:端口格式FTP服务器失败如何解决
问题根因
浏览器解析无协议头的地址时,会默认将其识别为当前站点下的相对路径,因此你直接传入IP:21格式的地址时,浏览器会将其拼接在当前域名后作为资源路径请求,自然无法跳转到目标FTP服务。
解决方案
你要求动态生成的$FTP变量本身仅保留IP:21格式、不能携带ftp://协议头,可在前端跳转逻辑中临时拼接协议头即可,不会改动原有$FTP的生成规则:
- 脚本跳转方案
修改原有JS代码为以下格式即可:
<script>location.href = 'ftp://' + '$FTP';</script>
如果是PHP直接输出变量,也可以写成:
<script>location.href = 'ftp://<?php echo $FTP; ?>';</script>
- 更兼容的备用方案
部分高安全等级的浏览器会阻止脚本主动触发非HTTP/HTTPS协议的跳转,你可以用主动点击的a标签替代自动跳转,兼容性更强:
<a href="ftp://<?php echo $FTP; ?>" target="_blank">点击访问FTP服务器</a>
如果需要保留自动跳转的逻辑,也可以用meta刷新标签实现:
<meta http-equiv="refresh" content="0; url=ftp://<?php echo $FTP; ?>">
内容的提问来源于stack exchange,提问作者Techflash
相关产品推荐
相关产品推荐

