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

时间:2018-12-26 15:59:15

标签: angular asp.net-web-api angular-router

我们在域的根目录托管了一个角度应用程序,例如: example.com

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

我们在api的web.config中有重写规则,以允许对/ api的调用,并且由于xhr调用正在工作,因此此命令正常工作。

对于身份验证,我们必须将浏览器路由至example.com/api/auth/whatever,以便随后可以将其适当地302传递至身份验证提供程序。用户进行身份验证后,他们将被路由回我们的API,然后又路由回角度应用程序。

这一切在开发中都没有问题,因为从技术上讲,所有内容都位于单独的域中(locahost:4200、4201等)。一旦将其部署在同一域中,则有角路由器将开始拦截auth链接的点击,并在没有路由匹配时路由到捕获所有路由。

我已经尝试过将target =“ _ self”添加到链接中,正如我看到的其他建议一样,但这并没有改变行为。

是否有一种方法可以迫使angular不处理路线,或者提供一些防护措施来拦截路线,只让浏览器处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

我能够借助chrome开发工具和this stackoverflow post

来解决这个问题

我们使用的是angular pwa软件包,我查看了该网络日志,该日志显示服务工作者正在从缓存中提供URL(在这种情况下,错误地)。我们在ngsw.json中添加了以下条目:

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

,现在不再缓存所有api调用。我们可能会进一步将其优化为仅使用我们的身份验证网址,但这目前正在起作用。