Я пытаюсь зарегистрировать активность пользователей для пары внутренних веб-сайтов, а также для наших сайтов SharePoint. Я использую JavaScript для вызова (GET) страницы Ashx (HTTPHandler), которая возвращает невидимый GIF 1x1. HTTPHandler получает URL-адрес, информацию браузера, IP-адрес, действие (отправленное как QueryString) и (часть, с которой я борюсь) имя пользователя. Имя пользователя собирается с помощью context.User.Identity в HTTPHandler, а в IIS 6 включена «Интегрированная проверка подлинности Windows». Вот часть регистрации js:
logAction: function(action) {
try {
var i = new Image(1, 1);
i.src = "http://intranet/tracker/urchin.ashx?action=" + action;
} catch (e) {
//alert(e);
}
Используя jQuery, я добавил обработчики для нажатия кнопок, ссылок и «выгрузки», которые вызывают файл Ashx и пропускают выполненное действие. (Он также вызывается при загрузке страницы).
Все это работало отлично, или я так подумал ... Оказалось, что я пропустил событие начальной загрузки страницы, когда пользователь впервые открыл одну из страниц, если она не находилась в том же домене, что и HTTPHandler. , Используя Fiddler , я мог видеть цикл NTLM для страницы (401.2, 401.1, 200), но только 401.2 для ashx. Похоже, что браузер не будет отправлять учетные данные пользователя, когда вызов HTTPHandler является междоменным. Следующая страница, которую посещает пользователь, регистрируется правильно, но эта первая страница не регистрируется.
Вот наши домены:
Что-то не так с моим дизайном, или это просто безопасность браузера? Спасибо!