JS - 更改"window.location"值和对象而不重定向



对于上下文,我试图实现的是web代理注入脚本。我正在尝试更改window.location和其中其他对象的值。我这样做是因为当脚本被代理并使用window.location.path时,它会输出/example而不是/proxy/websiteurl/example。当我尝试使用Object.defineProperty(window.location, 'href', {})时,它不起作用,并说我不允许在控制台中这样做。我真的没有代码可以提供,但如果有人帮我,我真的很乐意。

在不重定向的情况下更改位置的方法是使用history.pushState()

请注意,当用户刷新时,它会重定向到该url,除非您在使用完更改的位置后使用原始pathname推送状态。

console.log(window.location.href);
const oldLocation = window.location.pathname;
history.pushState(null, "a title", "/new-directory");
console.log(window.location.href);
// to reset
history.pushState(null, "a title 2", oldLocation);
console.log(window.location.href);

我认为有一组数据需要安全一致,这就是其中之一;通常,任何与域名、URL有关的东西,任何可能欺骗内容来源的东西,你都无法更改。

简单地说:出于安全考虑,JS永远不会允许你制作100%透明的代理。这是它不应该允许的第一件事。

话虽如此,内部内容需要知道它在URL操作中被代理。如果你没有拥有内在的部分,那将是非常艰难的运气。如果你这样做了,你应该参数化它的根url,任何交互都是基于它来计算的。因此,@CertainPerformance在问题评论中提出的问题非常有针对性。

最新更新