这两个窗口有什么区别.location.href重定向?(铬合金)



我正在尝试使用chrome中的window.location.href = ...进行简单的页面重定向。

例如,所需的URL是http://[hostname]:[port]/Error/Timeout

首先我尝试使用

window.location.href = window.location.host + "/Error/Timeout"

尽管我记录了生成的URL是正确的,但它不起作用,但该页面根本不重定向。

然后我更改为

window.location.href = "/Error/Timeout"

它有效!但是生成的URL与以前的方法完全相同。


所以我的问题是什么会有所不同?

window.location.host变量仅包含域(没有协议),因此您尝试将用户重定向到非valid URL,并且浏览器将不允许。

"/error/timut" 有效的URL,因为浏览器将在开始时将"/"视为"当前域的一部分",并且只需使用PROTOCOL://HOSTNAME:PORT/与您提供的URL。

您也可以使用:

window.location.href = window.location.protocol + "//" + window.location.hostname + (window.location.port ? (":"+window.location.port):'') + "/Error/Timeout"

更好选项:

url = new URL(window.location.href)
url.pathname = "/Error/Timeout"
window.location.href = url.toString()

最新更新