Вызов jquery $ .ajax приводит к 401 несанкционированному ответу в Chrome или Firefox, но работает в IE
У меня есть скрипт, работающий на веб-странице, который должен использовать метод JQuery $ .ajax (в настоящее время использующий jquery 1.7.2) для отправки нескольких запросов GET конечной точке службы в другом домене. У меня есть вызов ajax, работающий в IE (9, 10, 11), но он терпит неудачу с 401 несанкционированным ответом в Firefox и Chrome. Часть дополнительного сообщения об ошибке в Chrome: «Для доступа к этому ресурсу требуется полная аутентификация».
Мой ajax-вызов настроен следующим образом (dataType - это «json» для этих запросов, которые не выполняются, и async имеет значение true):
$.ajax({
url: url,
type: "GET",
async: isAsync,
dataType: dataType,
username: user,
password: pswd,
success: function (response, status) {
// success code here
},
failure: function (response, status) {
// failure code here
},
complete: function (xhr, status) {
// on complete code here
}
});
Я передаю имя пользователя и пароль, необходимые для доступа к службе, и это работает в IE. Я понимал, что ajax-функция JQuery будет правильно обрабатывать аутентификацию, поэтому, если возвращается ответ, указывающий, что требуется авторизация, он будет использовать предоставленные учетные данные, чтобы выполнить этот запрос правильно. Я что-то здесь упускаю? Нужно ли вручную добавлять заголовок авторизации, чтобы это работало?
ОБНОВЛЕНИЕ: Вот информация о запросах, ответах и файлах cookie, сообщенная Chrome и IE с помощью средств отладки F12 (некоторая информация заменена на [... удалено ...])
Хром (42.0.2311.90 м)
Заголовки ответа
access-control-allow-credentials: true access-control-allow-origin: [... удалено ...] access-control-expose-headers: cache-control: private, max-age = 0, соединение обязательное для повторной проверки : keep-alive кодировка контента: gzip content-length: 296 тип контента: text / html; charset = ISO-8859-1 дата: вт, 21 апр 2015 20:55:12 GMT истекает: вт, 21 апр 2015 20 : 55: 12 GMT p3p: CP = «NON DSP COR CURA PSAa PSDa НАША NOR BUS PUR COM NAV STA» set-cookie: JSESSIONID = qd-app-1348vf1vrksvc76oshcwirvjp.qd-app-13; Путь = /; Защищенный; HttpOnly установлен -cookie: NSC_vt1.sbmmzefw.dpn! -! IUUQT = ffffffff09091c3945525d5f4f58455e445a4a42378b; путь = /; безопасный; статус httponly: 401 неавторизованный вариант: версия для принятия-кодирования: базовая версия ALM-аутентификации: HTTP / 1.1 wwwM-аутентификация:
Заголовки запроса
: host: rally1.rallydev.com: метод: GET: путь: [... удален ...]: схема: https: версия: HTTP / 1.1 принять: application / json, текст / javascript,/; q = 0,01 принять кодировку: gzip, deflate, sdch язык принятия: en-US, en; q = 0,8 источник: [... удалено ...] реферер: [... удалено ...] пользовательский агент : Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 42.0.2311.90 Safari / 537.36
Ответные куки
JSESSIONID qd-app-1348vf1vrksvc76oshcwirvjp.qd-app-13 NSC_vt1.sbmmzefw.dpn! -! IUUQT ffffffff09091c3945525d5f4f58455e445a4a42378b
IE 11
Заголовки запроса
Запрос GET [... удален ...] Реферер [... удален ...] Принять
application / json, текст / javascript,/; q = 0,01 Accept-Language en-US Accept-Encoding gzip, deflate User-Agent Mozilla / 5.0 (Windows NT 6.1; WOW64; Trident / 7.0; rv: 11.0), как Gecko Host [... удалено ...] Соединение Сохранить -Cive-Cache-Control без cookie-файлов cookie
JSESSIONID = QD-приложение-08xmftgye78tde1b0wzcl2kit4m.qd-приложение-08; NSC_vt1.sbmmzefw.dpn - IUUQT = ffffffff09091c3145525d5f4f58455e445a4a42378b!; МИТИНГ-Деталь-treeCollapsed = ложь; ZSESSIONID = RpKo5acfRqmjPhW0vIU1rgurWmDhlka0lrGCY9MIWhU; SUBBUCKETID = 713
Заголовки ответа
Ответ HTTP / 1.1 200 OK RallyRequestID qd-app-08xmftgye78tde1b0wzcl2kit4m.qd-app-0810353108 Истекает чт, 1 января 1970 00:00:00 GMT Тип содержимого text / javascript; charset = utf-8 ETag "0101c2c8d3463ee3c1a4f950d4142b7d3" P3P CP = "NON DSP COR CURa PSAa PSDa НАШ NOR BUS PUR COM NAV STA" Cache-Control частный, макс. возраст = 0, необходимо повторно подтвердить дату вт, 21 апреля 201558 : 17 GMT Установочный файл cookie для поддержания соединения ZSESSIONID = RpKo5acfRqmjPhW0vIU1rgurWmDhlka0lrGCY9MIWhU; Путь = /; Домен = [... удален ...]; Безопасный; HttpOnly Set-Cookie SUBBUCKETID = 713; Путь = /; Домен [ удалено ...]; Безопасно; HttpOnly Content-Length 319
Печенье
Отправлено JSESSIONID qd-app-08xmftgye78tde1b0wzcl2kit4m.qd-app-08
Направлено NSC_vt1.sbmmzefw.dpn -! IUUQT ffffffff09091c3145525d5f4f58455e445a4a42378b Направлено РАЛЛИ-Detail-treeCollapsed ложь Направлено ZSESSIONID RpKo5acfRqmjPhW0vIU1rgurWmDhlka0lrGCY9MIWhU Направлено SUBBUCKETID 713 Поступило ZSESSIONID RpKo5acfRqmjPhW0vIU1rgurWmDhlka0lrGCY9MIWhU В конце сессии [... удален ...] / Да Полученное SUBBUCKETID 713 В конце сессии [... удалено ...] / Да Да