强制在 angular 的路由器之外处理相同的域链接

Forcing same domain links to be handled outside of angular's router

我们有一个 angular 应用程序托管在域的根目录下,比如说: example.com

我们在 /api 虚拟目录中有一个 mvc.net api 运行: example.com/api

我们在 api 的 web.config 中重写了规则,以允许调用 /api,这工作正常,因为我们的 xhr 调用正在工作。

为了进行身份验证,我们必须将浏览器路由到 example.com/api/auth/whatever,这样它就可以适当地 302 到身份验证提供程序。一旦用户通过身份验证,他们将被路由回我们的 API,然后返回到 angular 应用程序。

这一切在开发中都没有问题,因为从技术上讲,一切都在不同的域中(locahost:4200、4201 等)。一旦部署在同一个域上,angular 路由器就会开始拦截 auth link 点击,并在没有匹配的路由时路由到 catch all 路由。

我已经尝试将 target="_self" 添加到 links,正如我看到其他人推荐的那样,但这并没有改变行为。

有没有办法强制 angular 不处理路由,或者提供一些拦截路由的守卫,让浏览器处理它?

我在 chrome 开发工具的帮助下解决了这个问题,

我们正在使用 angular pwa 包,我查看了网络日志,显示 service worker 正在从缓存中为 URL 提供服务(在本例中是错误的)。我们在 ngsw.json 中添加了以下条目:

  "dataGroups":[
    {
      "name": "api",
      "urls": ["/api"],
      "cacheConfig": {
        "maxSize": 0,
        "maxAge": "0u",
        "strategy": "freshness"
      }
    }
  ]

现在所有 api 调用都不再缓存。我们可能会进一步将其优化为仅我们的身份验证 url,但目前这是有效的。