我有这两种方法:
toLogin: function (nextState, replace) {
if (!localStorage.get("token")) {
return replace('/signin');
}
},
toHome: function (nextState, replace) {
if (localStorage.get("token")) {
return replace('/');
}
}
return replace('/signin')
就像魅力一样,return replace('/')
给了我错误:
Uncaught SecurityError: Failed to execute 'replaceState' on 'History': A history state object with URL 'http:' cannot be created in a document with origin 'http://localhost:3000'.
我是否需要设置一些我在文档中遗漏的基本URL,或者这是一个错误?
答案 0 :(得分:0)
您的代码或React在某处试图将http://...
URL插入到导致此安全违规的历史记录中(这意味着错误的含义)。
pushState
的URL参数应该相对于当前页面,或者是您自己域中的绝对URL。你不能推动州跨域 - 这将是一个重大的安全漏洞。
此历史记录条目的URL由此参数指定。请注意,浏览器在调用pushState()后不会尝试加载此URL,但可能会稍后尝试加载URL,例如在用户重新启动浏览器之后。新URL不一定是绝对的;如果它是相对的,则相对于当前URL进行解析。新网址必须与当前网址的来源相同;否则,pushState()将抛出异常。此参数是可选的;如果没有指定,则将其设置为文档的当前网址。