Я пытаюсь понять, как работает кнопка «Загрузить все» в Office365 Outlook Online при загрузке нескольких вложений из электронной почты.
![Download All button](https://i.stack.imgur.com/z8Bum.png)
Кнопка типа "кнопка". Похоже, это не часть формы. У него есть некоторые прослушиватели событий «щелчка» (по-видимому, использующие React), но я не могу понять, приводят ли они к загрузке при загрузке.
<button type="button" class="ms-Button ms-Button--action ms-Button--command _36CbeMUul160_BaOc004Od _25PDIRwPTbbCvgI4wMWgWF root-133" data-is-focusable="true">
<span class="ms-Button-flexContainer flexContainer-78" data-automationid="splitbuttonprimary">
<span class="ms-Button-textContainer textContainer-79">
<span class="ms-Button-label label-49" id="id__875">Download all</span>
</span>
</span>
</button>
Когда я нажимаю на нее, Chrome не делает не показывать сетевое событие вообще на вкладке Сеть. Firefox показывает его как запрос GET, и он не похож на XmlHttpRequest (без заголовка Origin и т. Д. c):
Запрос:
URL:https://outlook.office365.com/owa//service.svc/s/GetAllAttachmentsAsZip?id=...&X-OWA-CANARY=...
Request Method:GET
Remote Address:40.97.221.114:443
Status Code:
200
Version:HTTP/1.1
Referrer Policy:no-referrer
Host: outlook.office365.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:72.0) Gecko/20100101 Firefox/72.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Cookie: ...
Upgrade-Insecure-Requests: 1
Ответ:
HTTP/1.1 200 OK
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: application/zip; authoritative=true;
Content-Encoding: gzip
Expires: Mon, 20 Jan 2020 02:34:12 +0000
Vary: Accept-Encoding
Server: Microsoft-IIS/10.0
request-id: ...
X-CalculatedFETarget: MAXPR0101CU002.internal.outlook.com
X-BackEndHttpStatus: 200
X-FEProxyInfo: MAXPR0101CA0031.INDPRD01.PROD.OUTLOOK.COM
X-CalculatedBETarget: MAXPR01MB2735.INDPRD01.PROD.OUTLOOK.COM
X-BackEndHttpStatus: 200
X-RUM-Validated: 1
X-MailboxGuid: ...
X-Content-Type-Options: nosniff
X-BeSku: WCS5
x-ms-appId: ...
X-OWA-Version: 15.20.2644.27
X-OWA-OWSVersion: V2018_01_18
X-OWA-MinimumSupportedOWSVersion: V2_6
X-Frame-Options: SAMEORIGIN
X-OWA-HttpHandler: true
Content-Disposition: attachment; filename*=UTF-8''subject.zip
X-BackEnd-Begin: 2020-01-21T02:34:12.321
X-BackEnd-End: 2020-01-21T02:34:12.349
X-DiagInfo: MAXPR01MB2735
X-BEServer: MAXPR01MB2735
X-UA-Compatible: IE=EmulateIE7
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Proxy-RoutingCorrectness: 1
X-Proxy-BackendServerStatus: 200
X-FEServer: MAXPR0101CA0031
X-FEServer: BYAPR03CA0003
Date: Tue, 21 Jan 2020 02:34:11 GMT
Я не могу сказать, какой механизм используется для запуска этого запроса: навигация по страницам, XmlHttpRequest, Fetch? .. Что заставляет браузер рассматривать его как вложение? Я попытался перехватить этот ответ в Fiddler и изменить заголовки ответа на
Content-Type: text/html
Content-Disposition: inline
Content-Length: 5
Hello
Но браузер все равно загружает ответ в виде файла, а не отображает его в строке. Почему это так?