Exchange HTTP Header
Die meisten Anwender nutzen ja einfach ihren Browser um per Outlook WebApp ihre Mails zu lesen. Wer aber per Fiddler, Chromium Debugger oder anderer Tools einen Blick auf die HTTP-Antworten wirft, findet den ein oder anderen interessanten Header.
Debugger-Response
Ich habe also einfach mal den im Edge, Chrome, Firefox eingebauten Debugger gestartet und den Netzwerkverkehr einer OWA-Sitzung mitschneiden lassen. Hier z.B. die Antwort auf einen Request, der die Anlagen zur Mail "107" liefert.
https://outlook.office.com/owa/service.svc?action=GetAttachmentPreviews&app=Mail&n=107
zuerst sehen wir eine klassische Header zum Thema "caching-control", "content-length" und "content-type". Aber dann sehen wir erste Header, die wohl dem Client Hinweise zur Telemetrie geben und dann beginnt die lange Liste der "X-" Header. Da sind schon einige interessante Header darunter:
Einen Teil der Felder können Sie auch einfach per PowerShell "anonym" ermitteln. Da es dann aber einen 401 gibt, bekommen Sie den Header aus der Exception:
(Invoke-WebRequest https://outlook.office.com/owa/service.svc) $error.exception.response.headers Key Value --- ----- Server {Microsoft-IIS/10.0} request-id {d3316f5c-83cb-8c04-9996-05c3e9581361} Strict-Transport-Security {max-age=31536000; includeSubDomains; preload} Alt-Svc {h3=":443", h3-29=":443"} X-CalculatedFETarget {GV3P280CU004.internal.outlook.com} X-BackEndHttpStatus {401, 401} Set-Cookie {ClientId=6246C1696633478596EB600B97935513; expires=Tue, 28-Nov-2023 16:53:24 GMT; path=/… WWW-Authenticate {Bearer client_id="00000002-0000-0ff1-ce00-000000000000", trusted_issuers="00000001-0000-… X-CalculatedBETarget {GV1P191MB2243.EURP191.PROD.OUTLOOK.COM} X-RUM-Validated {1} X-RUM-NotUpdateQueriedPath {1} X-Content-Type-Options {nosniff} X-BeSku {WCS7} X-OWA-DiagnosticsInfo {0;0;0} X-IIDs {0} X-BackEnd-Begin {2022-11-28T16:53:24.260} X-BackEnd-End {2022-11-28T16:53:24.260} X-DiagInfo {GV1P191MB2243} X-BEServer {GV1P191MB2243} X-UA-Compatible {IE=EmulateIE7} X-Proxy-RoutingCorrectness {1} X-MS-ForwardingCorrelationId {eec3b85c-5eaa-47a5-858a-e9f85286d018} X-Proxy-BackendServerStatus {401} X-FEProxyInfo {AS4P191CA0004.EURP191.PROD.OUTLOOK.COM} X-FEEFZInfo {AMS} X-FEServer {GV3P280CA0112, AS4P191CA0004} Report-To {{"group":"NelOfficeUpload1","max_age":7200,"endpoints":[{"url":"https://exo.nel.measure.… NEL {{"report_to":"NelOfficeUpload1","max_age":7200,"include_subdomains":true,"failure_fracti… X-FirstHopCafeEFZ {AMS} Date {Mon, 28 Nov 2022 16:53:23 GMT}
Bedeutung einiger Felder
Ich versuche mich mal an einer Deutung der ein oder anderen Felder
- x-backend-begin und x-backendend
Ich würde diese beiden Zeiten als Zeitstempel des Backend ansehen aus deren Differenz ich die Zeit zur Beantwortung des Requests ermitteln kann. - x-beserver/x-calculatedbetarget
In meinen Fall dürfte das der Server sein, auf dem zu dem Zeitpunkt mein Postfach gelegen hat. Wer mag, kann so also indirekt erkennen, ob im Backend grade eine Datenbank zu einem anderen Server geschwenkt wurde. - x-feefuinfo/x-firsthopcafeefz/x-feproxyinfo
Anhand der Namen der Server und der anderen Felder kann man wohl behaupten, dass mein Client hier mit einem System in Amsterdam gesprochen hat. - x-feserver
Diese Feld kommt aber mehrfach vor und ich interpretiere es derart dass Exchange Online, anders als Exchange On-Premises sogar zwei Frontends hintereinander kaskadiert, wen dies erforderlich ist. Meine Datenbank liegt wohl in Paris (PA/PR) und da ich Netzwerktechnisch gerade in Amsterdam lande, muss der Frontend-Server den Zugriff ja nach Paris bringen. Damit nun aber nicht alle FE-Server in einem anderen Standort den genauen Server meiner Datenbank wissen müssen, sendet der erste Frontend die Zugriffe auf einen beliebigen Frontend im Ziel-Datacenter, der dann die Anfrage zum passenden Backend routet.
Diese Verhalten habe ich aber schon früher erkannt und z.B. auf End2End EWS beschrieben. - x-owa-version
Er wer drauf anlegt, kann hier eine Exchange Versionsnummer ermitteln. Am 27.11.2022 stand hier eine 15.20.5857.22. Die damals aktuelle On-Prem Version war 15.02.1118.20 (https://learn.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019#exchange-server-2019), d.h. deutlich hintendran. Wobei die Online-Versionsnummer wenig aussagekragt hat. Wir wissen nicht, ob die Nummer vom Backend oder einem der Frontends kommt und angeblich haben sich die Wege von Exchange 2019 und Exchange Online schon vor einigen Jahren "getrennt". - x-owa-diagnosticsinfo
Leider habe ich noch keine Information, was diese drei Zahlen genau bedeuten. Ich könnte mir vorstellen, dass Sie ähnlich zum "Sharepoint HealthScore (Siehe End2End-SharePoint) ein paar Details über die "Gesundheit" des Exchange Servers bzw. der Performance beschreiben könnte.
Speziell zum Feld "x-owa-diagnosticsinfo" bin ich noch auf der Suche nach weiteren Informationen und Quellen. Es könnte durchaus interessant sein, diese Daten z.B. im Rahmen eines Monitorings auszuwerten.
Weitere Links
- End2End-HTTP
- End2End-SharePoint
- SharePoint 2013: SharePoint Health Score and Throttling deep dive
https://www.wictorwilen.se/blog/sharepoint-2013-sharepoint-health-score-and-throttling-deep-dive/ - X-OWA-DiagnosticsInfo
https://webtechsurvey.com/response-header/x-owa-diagnosticsinfo