Blazor使用NavigationManager跳转外部域名google.com失效如何解决
问题原因
NavigationManager.NavigateTo 方法默认将不带协议前缀的地址识别为应用内相对路径,会自动拼接当前应用的根域名生成跳转地址,这就是代码执行后跳转到localhost:3030/google.com内部地址的根本原因。
正确实现方案
跳转到外部站点需要满足两个核心要求:
- 目标地址必须携带完整的协议前缀(如
https://、http://),不能仅传入域名 - 调用
NavigateTo方法时传入第二个参数forceLoad: true,跳过Blazor的SPA路由拦截逻辑,触发浏览器原生整页跳转
正确代码示例:
@inject NavigationManager NavigationManager void NavigateToExternal() { // 目标地址带完整协议头,开启强制整页加载 NavigationManager.NavigateTo("https://google.com", forceLoad: true); }
说明:该写法在Blazor WebAssembly、Blazor Server两种托管模式下均生效,
forceLoad参数会强制浏览器脱离Blazor路由体系直接加载目标地址,不会再出现路径拼接问题。
内容的提问来源于stack exchange,提问作者GRAGW
相关产品推荐
相关产品推荐

