window.open给.html结尾URL传参失效问题求助
问题原因及解决办法
这是因为serve npm包默认的**干净URL(Clean URLs)**特性导致的:
- 当你请求
/a时,serve会自动尝试匹配a.html文件,这个过程是内部处理,不会触发重定向,所以查询参数?title=666会被完整保留。 - 当你直接请求
/a.html?title=666时,serve的默认配置会把带.html后缀的URL重定向到不带后缀的版本(也就是/a),但这个重定向操作没有携带原URL的查询参数,导致新窗口里的URL丢失了title=666。
验证方式
打开浏览器开发者工具的Network面板,观察请求/a.html?title=666的网络请求:会看到一个301重定向响应,目标地址是/a,未携带原查询参数。
解决办法
有两种可行方案:
- 方案一:关闭serve的干净URL特性,启动时添加
--no-clean-urls参数:
此时请求serve --no-clean-urls/a.html?title=666不会被重定向,参数将完整保留。 - 方案二:统一使用不带
.html后缀的路径格式,比如始终用window.open('/a?title=666'),适配serve的默认行为。
内容的提问来源于stack exchange,提问作者user23626796
相关产品推荐
相关产品推荐

