Chrome,WIndows身份验证和XHR

时间:2016-05-18 09:51:14

标签: .net angularjs google-chrome authentication xmlhttprequest

我们正在开发用于前端的AngularJS和用于后端休息服务的C#.NET的应用程序。 我们使用Windows身份验证登录域。我们使用actionContext.RequestContext.Principal.Identity来检索浏览器发送的用户。 工作正常,除非我们进行注销,强制浏览器向用户请求新凭据。用户返回新的凭据,从这里,对于使用AngularJS $ http完成的每个XHR请求,一些请求在actionContext.RequestContext.Principal.Identity上发送新的凭据,但其他请求将发送旧凭据,似乎它们被缓存在某个地方浏览器。我们尝试刷新页面,但问题仍然存在。 我们认为它发生在Chrome中,但不会发生在IE中。

感谢您的帮助。

1 个答案:

答案 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   响应被缓存。