Ответ 1
Текущее состояние стандартизации API XMLHttpRequest ограничивает доступ к полям заголовка Set-Cookie и Set-Cookie2:
client.getAllResponseHeaders()
Возвращает все заголовки из ответа, за исключением тех, чье имя поля
Set-Cookie
илиSet-Cookie2
.
Любое другое поле заголовка должно быть возвращено.
Но поскольку вы делаете запрос с кросс-началом, браузеру необходимо реализовать XMLHttpRequest Level 2, поскольку исходное XMLHttpRequest делает только одноименное начало запросы:
Спецификация XMLHttpRequest Level 2 расширяет объект XMLHttpRequest новыми функциями, такими как запросы с кросс-началом [...]
Там вы можете прочитать, что " Спецификация совместного использования ресурсов Cross-Origin фильтрует заголовки, которые фильтруют заголовки, которые отображаются getResponseHeader() для non same-origin запросов.". И эта спецификация запрещает доступ к любому полю заголовка ответа, за исключением простых полей заголовка ответа (например, Cache-Control, Content-Language, Content-Type, Expires, Last-Modified и Pragma):
Пользовательские агенты должны отфильтровывать все заголовки ответов, отличные от тех, которые являются простыми заголовками ответа [...]
например. поэтому метод
getResponseHeader()
XMLHttpRequest не будет показывать какой-либо заголовок, не указанный выше.