You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不触发浏览器跳转仅修改地址栏URL中的hostname

问题结论

无法通过JS实现仅修改地址栏hostname、不触发页面跳转/加载的需求,这是浏览器的安全机制强制限制的,没有绕过空间。


限制原因
  • 浏览器同源策略对location对象的源属性有严格约束:hostname、protocol、port三个字段属于站点源标识的核心组成部分,只要修改任意一个,浏览器都会判定为要导航到新的跨域地址,立刻触发页面加载跳转,不可能仅修改地址栏显示内容不执行跳转。
  • 可修改地址栏但不触发跳转的HTML5 History API(history.pushState/history.replaceState),仅支持修改URL的路径、查询参数、哈希片段,完全不允许修改协议、域名、端口,尝试传入跨域域名时浏览器会直接抛出安全错误拒绝执行。

适配你测试场景的替代方案

你要测试点击劫持的场景完全可以通过其他合法方式实现,不需要修改地址栏hostname:

  • 直接在和目标站点同域名的测试页面中嵌入目标iframe,此时top.location.hostname与self.location.hostname天然一致,可直接测试点击劫持交互逻辑是否存在漏洞。
  • 没有同域名测试环境的话,可以修改本地hosts文件,把目标域名指向127.0.0.1,在本地搭建同域名的测试服务即可满足校验条件。
  • 也可以直接通过浏览器开发者工具篡改目标站点的校验逻辑:找到判断top.location.hostname == self.location.hostname的代码段,打断点修改判断返回值,或者直接覆盖相关校验函数,让校验永久通过后即可测试点击劫持风险。

内容的提问来源于stack exchange,提问作者kalalua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:27:04