无公网远程生产服务器JSP引用jQuery脚本相关问题咨询
问题解答
问题1答复
部署到无公网环境时,指向googleapis的绝对URL脚本无法正常工作。
这类CDN资源由访问系统的用户浏览器主动发起请求拉取,无公网环境下客户端无法访问谷歌公共CDN,会出现脚本加载失败,依赖jQuery的所有功能全部失效。
问题2答复
该报错和本地引用脚本无关,是jQuery版本不兼容导致的:
- 你使用的
jquery.autocomplete.js是非常老旧的插件,依赖jQuery 1.9版本之前才支持的$.browser.msie属性(该属性用于判断IE浏览器,在jQuery 1.9及之后版本被完全移除) - 你之前引用的谷歌CDN版本是jQuery 1.3.2,支持该API;你下载到本地的jQuery版本大概率高于1.3.2,导致插件调用不存在的属性抛出报错。
解决方法:
- 下载和CDN完全同版本的jQuery 1.3.2、jQuery UI 1.8.18资源到本地目录即可
- 若要使用高版本jQuery,可替换老旧的autocomplete插件为jQuery UI原生的autocomplete组件,无需额外引入第三方插件
问题3答复
不存在「只能通过绝对源引用才能运行、本地引用失效」的限制。
只要脚本文件内容完整、版本匹配、引用路径正确,本地引用和CDN引用的运行效果完全一致。
这类场景的最佳实践
- 无公网的生产环境必须将所有依赖的前端静态资源全部本地化存储,禁止依赖外部公共CDN
- 所有依赖的前端库要锁死版本,测试环境使用什么版本,生产环境就使用对应版本,不要随意升级
- JSP中引用静态资源建议使用项目上下文绝对路径,避免相对路径在不同路由下加载错误,示例:
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/script/jquery.min.js"></script>
- 若需要兼容公网环境使用CDN,可添加本地 fallback 逻辑,CDN加载失败时自动切换到本地资源
内容的提问来源于stack exchange,提问作者rinilnath
相关产品推荐
相关产品推荐

