1

Мы разрабатываем приложение с AngularJS для frontend и C# .NET для служб backend rest. Мы используем аутентификацию Windows для входа в домен. Мы используем actionContext.RequestContext.Principal.Identity для извлечения пользователя, отправленного браузером. Работает отлично, за исключением случаев, когда мы выходим из системы, заставляя браузер запрашивать у пользователя новые учетные данные. Пользователь отправляет новые учетные данные, и отсюда для каждого запроса XHR, выполненного с помощью AngularJS $ http, некоторые запросы отправляют новые учетные данные в actionContext.RequestContext.Principal.Identity, но другие отправляют старые учетные данные, кажется, что они кэшируются где-то на браузер. Мы попытались обновить страницу, но проблема остается. Мы считаем, что это происходит в Chrome, но не в IE.Chrome, WIndows Authentication и XHR

Спасибо за помощь.

ответ

0

$ HTTP имеет кэш вариант вы можете установить его в ложное:

$http.get(url, {cache:false}) 

из документации:

Кэширование ответов $ HTTP не кэшируются по умолчанию. Чтобы включить кеширование, вы должны установить значение config.cache или значение кэша по умолчанию в значение TRUE или к объекту кеша (созданному с помощью $ cacheFactory). Если определено значение , значение config.cache имеет приоритет над значением кеша по умолчанию .

Для:

кэша всех ответов - установить значение кэша по умолчанию в значении TRUE или в кэш объектов в кэша конкретного ответ - установить config.cache значения ИСТИНЫ или объект кэша Если кэширование , но ни кеш-память , ни config.cache не установлены в объект кеша, тогда используется объект по умолчанию $ cacheFactory ($ http).

Значение кеша по умолчанию можно установить, обновив свойство $ http.defaults.cache или свойство $ httpProvider.defaults.cache .

Когда кеширование включено, $ http хранит ответ от сервера с использованием соответствующего объекта кеша. В следующий раз, когда тот же запрос отправлен , ответ возвращается из кеша без отправки запроса на сервер.

Примите к сведению, что:

только GET и JSONP запросы кэшируются. Ключ кеша - это запрос URL, включая параметры поиска; заголовки не рассматриваются. Кэшированные ответы возвращаются асинхронно, точно так же, как ответы с сервера. Если несколько идентичных запросов сделаны с использованием того же кеша, который еще не заполнен, будет отправлен один запрос на , а оставшиеся запросы возвратят тот же ответ. A Заголовок кэша управления ответом не влияет на то, как и как кэшируются ответы .

+0

Кажется, это не проблема, так как мы не используем cache = true. Фактически, сервер получает запрос (поэтому он не кэшируется), но проблема заключается в данных запроса, которые отправляют браузер на сервер. Спасибо, в любом случае! –

+0

Тогда проблема в том, что старые учетные данные не освобождаются, директива или то, что когда-либо отвечает за это, никогда не уничтожается.поэтому он запоминает старые учетные данные. можете ли вы опубликовать код того, как вы это делаете? – MayK

+0

Но я не уничтожаю директиву и все экземпляры JS с обновлением страницы? –

Смежные вопросы