我们正在开发用于前端的AngularJS和用于后端休息服务的C#.NET的应用程序。 我们使用Windows身份验证登录域。我们使用actionContext.RequestContext.Principal.Identity来检索浏览器发送的用户。 工作正常,除非我们进行注销,强制浏览器向用户请求新凭据。用户返回新的凭据,从这里,对于使用AngularJS $ http完成的每个XHR请求,一些请求在actionContext.RequestContext.Principal.Identity上发送新的凭据,但其他请求将发送旧凭据,似乎它们被缓存在某个地方浏览器。我们尝试刷新页面,但问题仍然存在。 我们认为它发生在Chrome中,但不会发生在IE中。
感谢您的帮助。
答案 0 :(得分:0)
$ http有一个选项缓存,您可以将其设置为false:
$http.get(url, {cache:false})
来自文档:
默认情况下不会缓存缓存$ http响应。要启用缓存,必须设置config.cache值或默认缓存 value为TRUE或缓存对象(使用$ cacheFactory创建)。如果 定义后,config.cache的值优先于默认值 缓存值。
为了:
缓存所有响应 - 将默认缓存值设置为TRUE或设置为a 缓存对象缓存特定的响应 - 将config.cache值设置为 TRUE或缓存对象如果启用了缓存,但两者都没有 默认缓存和config.cache都设置为缓存对象,然后是 使用默认的$ cacheFactory($ http)对象。
可以通过更新来设置默认缓存值 $ http.defaults.cache属性或$ httpProvider.defaults.cache 属性。
启用缓存后,$ http会存储服务器的响应 使用相关的缓存对象。下次同样的请求 make,响应从缓存返回而不发送 请求服务器。
请注意:
仅缓存GET和JSONP请求。缓存键是请求 包含搜索参数的URL;标题不予考虑。缓存 响应以异步方式返回,与响应相同 从服务器。如果使用的是多个相同的请求 相同的缓存,尚未填充,将进行一个请求 服务器和剩余的请求将返回相同的响应。一个 响应中的缓存控制头不影响if或how 响应被缓存。