使用javascript获取方法路由到URL

使用javascript获取方法路由到URL,javascript,node.js,express,fetch,Javascript,Node.js,Express,Fetch,我的问题似乎很基本,但我在这个论坛上遇到了很多文档和问题,没有找到任何适当的方法来完成工作 我有一个安全的webapp,在其中我以编程方式处理重定向,以便在每个请求中发送身份验证头。因此,我没有使用href链接,而是使用按钮触发以下功能: route_accessor.mjs const访问=(路径=“”)=>{ const token=localStorage.getItem('anov_auth_token'); 常数dest=`http://localhost:8080/${path}`;

我的问题似乎很基本,但我在这个论坛上遇到了很多文档和问题,没有找到任何适当的方法来完成工作

我有一个安全的webapp,在其中我以编程方式处理重定向,以便在每个请求中发送身份验证头。因此,我没有使用
href
链接,而是使用按钮触发以下功能:

route_accessor.mjs

const访问=(路径=“”)=>{
const token=localStorage.getItem('anov_auth_token');
常数dest=`http://localhost:8080/${path}`;
常量头=新头();
if(token)headers.append('authorization',token);
取回(
目的地,
{
方法:“GET”,
标题,
模式:“cors”,
重定向:“跟随”
}
)
。然后(响应=>{
if(response.url.includes('error/403')){
localStorage.removietem('anov_auth_token');
}
//这里我需要重定向到响应页面
})
.catch(错误=>{
控制台错误(error);
});
};
导出默认访问;
然后,我有NodeJs后端,它决定了我应该去哪里,或者:

  • 我请求的页面
  • 403页(如果我发送了错误的令牌)
  • 登录页面(如果我没有发送任何令牌)
后端到目前为止工作得很好。问题是,一旦我提出请求,我就无法按我的意愿显示结果。这是我试过的。下面的代码发生在我将注释放在route_accessor.mjs中的地方

使用window.location

window.location.href=response.url;
我尝试了各种变体,例如
window.location.replace()
,但都遇到了相同的问题:这些方法对请求的url启动第二个请求,而不发送标题。所以,当我的服务器可以接受令牌时,我就进入了一个无限403重定向循环

我尝试了以下帖子中列出的方法:

使用document.write()

我发现的第二个可以接受的答案是手动更新页面内容和位置。以下内容几乎达到了我的目的,但存在一些缺陷:

response.text().then(htmlResponse=>{
document.open();
文件编写(htmlResponse);
document.close();
//如果没有第二个参数,这并不能满足我的要求
window.document.dispatchEvent(新事件(“DOMContentLoaded”){
泡泡:是的,
可取消:正确
}));
});
有了这个,我可以更新我的视图。然而,URL保持不变(我希望它改变)。虽然每个脚本都已加载,但我只有很少的
DOMContentLoaded
事件使我的页面功能全面,但它们根本没有被触发。关闭文档后,我无法正确地分派新的
DOMContentLoaded

还有一些小问题,比如控制台没有被清除

结论

我现在很长一段时间都在关注这个问题,我所有的研究都没有引导我找到我想要的东西。也许我错过了重要的一点,但无论如何

这只涉及get请求

它们的行为是否像一个链接标签,只有一个href,但有额外的标题?我只能用javascript来实现这一点,还是它们的限制


提前感谢您的回答

尝试对身份验证令牌使用cookie,而不是本地存储。请参阅尝试对身份验证令牌而不是本地存储使用cookie。看见