我们在域的根目录托管了一个角度应用程序,例如:
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>
答案 0 :(得分:0)
我能够借助chrome开发工具和this stackoverflow post
来解决这个问题我们使用的是angular pwa软件包,我查看了该网络日志,该日志显示服务工作者正在从缓存中提供URL(在这种情况下,错误地)。我们在ngsw.json中添加了以下条目:
"dataGroups":[
{
"name": "api",
"urls": ["/api"],
"cacheConfig": {
"maxSize": 0,
"maxAge": "0u",
"strategy": "freshness"
}
}
]
,现在不再缓存所有api调用。我们可能会进一步将其优化为仅使用我们的身份验证网址,但这目前正在起作用。