Как запретить iOS показ дайджест-запроса на аутентификацию для фонового XMLHttpRequest's - PullRequest
0 голосов
/ 17 апреля 2020

На нашем сервере запущено приложение HTML - Js. Приложение выполняет некоторые асинхронные c SOAP -запросы (опрос 1с) с XMLHttpRequest. Все работает как положено на Windows 10 с Chrome, Edge, Firefox. Я открываю сайт, браузер запрашивает имя пользователя и пароль. После ввода все работает, запросы XMLHttp в фоновом режиме выполняются с правильным заголовком авторизации, мне не нужно повторно вводить учетные данные, пока я не закрою вкладку:

POST /control HTTP/1.1
Origin: http://192.168.51.20:5001
Referer: http://192.168.51.20:5001/webhome.html
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362
Accept: */*
Accept-Language: de-DE,de-CH;q=0.8,de;q=0.6,fr-CH;q=0.4,fr;q=0.2
CONTENT-TYPE: text/xml
SOAPACTION: urn:innoxel-ch:service:noxnetRemote:1#getState
Accept-Encoding: gzip, deflate
Host: 192.168.51.20:5001
Content-Length: 294
Connection: Keep-Alive
Cache-Control: no-cache
Authorization: Digest username="administrator",realm="INNOXEL Master 3",nonce="028344eb7776099798416074ea91336708d7e03262947e60",uri="/control",cnonce="1b45edab92b7d6f309646664c05a08d5",nc=00000035,algorithm=MD5,response="638f2ec9435b8c3b745ee002180d4c69",qop="auth"

Все запросы отправляются напрямую с заголовком авторизации set.

На iPad (протестировано с Safari и Firefox) XMLHttpRequest всегда отправляет запрос без заголовка авторизации:

POST /control/ HTTP/1.1
Host: 192.168.110.128:5001
Content-Type: text/xml
Origin: http://192.168.110.128:5001
SOAPACTION: urn:innoxel-ch:service:noxnetRemote:1#getState
Accept-Encoding: gzip, deflate
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15
Referer: http://192.168.110.128:5001/webhome.html
Content-Length: 294
Accept-Language: de-ch

Сервер отправляет 401:

HTTP/1.1 401 Unauthorized
DATE: 17.04.2020 14:54:33
SERVER: INNOXEL Master 3/1.4.1.0
CACHE-CONTROL: no-cache
CONNECTION: close
CONTENT-LENGTH: 0
WWW-AUTHENTICATE: Digest realm="INNOXEL Master 3", nonce="5936eab621e8571b8a0610fd4fe6162708d7e2eff5c54b50", algorithm="MD5", qop="auth"

, а затем запрос снова отправляется с правильно установленным заголовком авторизации:

POST /control/ HTTP/1.1
Host: 192.168.110.128:5001
Accept: */*
Authorization: Digest username="administrator", realm="INNOXEL Master 3", nonce="5936eab621e8571b8a0610fd4fe6162708d7e2eff5c54b50", uri="/control/", response="3e47c9abb7b7fd771ddbd80c4ea93024", algorithm="MD5", cnonce="136b8a0b207942c6085852f90f94d0b0", nc=00000001, qop="auth"
SOAPACTION: urn:innoxel-ch:service:noxnetRemote:1#getState
Accept-Encoding: gzip, deflate
Accept-Language: de-ch
Content-Type: text/xml
Origin: http://192.168.110.128:5001
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15
Connection: keep-alive
Referer: http://192.168.110.128:5001/webhome.html
Content-Length: 294

К сожалению, здесь браузер иногда отображает всплывающее окно с логином, и опрос останавливается.

Есть ли способ всегда добавлять заголовок авторизации на iOS, возможно, что-то, что я могу попробовать в XMLHttpRequest или в конфигурации браузера?

Любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...