xhr.send('x=Y&a=b');
(setzt) spontan Content-Type: text/plain; charset=utf-8 (...), das natürlich 1. Blödsinn istNein, das ist kein Blödsinn. Du sendest einen String (Web IDL Typ USVString).
Dieser String entspricht dem Content-Type application/x-www-form-urlencoded
Der Browser verhält sich damit gemäß der Spec, siehe 4.5.6 send() und 5.2 Body mixin.
wobei dieser Enctype selbstverständlich auch als Messagebody per POST gesendet werden kann. Was ein Browser auch tut ohne einen Content-Type header dazuzutun.
Dass die send-Methode den Inhalt eines Strings beschnuppert und daraus einen Content-Type errät, gestattet die Spec nicht.
Das verlange ich auch gar nicht.
Wenn Du urlencoded willst, ohne selber den Content-Type zu setzen, dann sende ein URLSearchParams Objekt. Das wird Spec-gemäß mit dem von Dir gewünschten Content-Type gesendet.
Nein, wird sie nicht. Auch damit wird text/plain
gesendet.
Und meine Frage ist immernoch, wie ich dem xhrObjekt diese Sponatinät abgewöhnen kann. Also dem xhr Objekt beizubringen daß es sich so verhält wie der Browser in dem es lebt.
MFG