我正在尝试使用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()