Vor allem meine ich den »Origin-Header«
Stimmt, den hatte ich übersehen. Ich bitte um Entschuldigung.
Für den Aushandlungsprozess ist der Header (dem Server) allerdings nicht wichtig, sofern ich das richtig sehe.
Anhand von diesem "Origin-Header" kann doch der Server entscheiden, ob er den Request akzeptiert oder nicht.
Das könnte er, ja.
Es leuchtet mir nicht ein, warum der Browser nun partout verlangt, dass der Server vor den angeforderten Daten noch einen entsprechenden »Access-Control-Allow-Origin:« sendet.
Es wurde entschieden, diese Aushandlung komplett auf dem Level von HTTP umzusetzen, nicht erst auf der darüber liegenden Anwendungslogik. Es soll für die Anwendungen darüber transparent sein. Nicht der Server soll entscheiden, ob ein Cross-Domain-Request erlaubt ist, sondern der Browser soll anhand der Whitelist entscheiden, ob die Response (im konkreten Fall) an das JavaScript in der Sandbox weitergegeben wird.
Wenn es der Server nicht erlauben will, soll er halt gar keine Daten senden und dem Browser das mitteilen mit "503 - Ätsch!". Die trotzdem gesendeten Daten brauchen doch nur unnötig Bandbreite und Energie während sie um den Planeten reisen, um schließlich vom Browser verworfen zu werden
Dafür gibt es Preflight-Requests.
Die genauen Hintergründe der Architektur-Umsetzung von CORS sind mir nicht bekannt, daher kann ich diese Entscheidung weder begründet angreifen noch verteidigen.
Mathias