Der Header X-Requested-With: XMLHttpRequest
HTTP-Header wird an einen AJAX-Request nicht automatisch hinzugefügt, entweder mit fetch
oder mit der altmodischen Verwendung des XMLHttpRequest
Objekts. Es wird oft von Clientbibliotheken wie jQuery hinzugefügt. Wenn die Kopfzeile vorhanden ist, wird sie in Express von request.xhr
dargestellt.
Wenn Sie es auf die Anfrage hinzuzufügen (die einfachste Lösung für dieses Problem) Sie es als Standard-Header mit fetch
hinzufügen:
fetch(url, {
headers: {
"X-Requested-With": "XMLHttpRequest"
}
});
Dies wird nun in req.xhr
widerspiegeln.
Ein besser Lösung ist die Accept
Header auf einen sinnvollen Wert einzustellen. Wenn Sie JSON wollen zurückgegeben werden, setzen Accept
zu application/json
:
fetch(url, {
headers: {
"Accept": "application/json"
}
});
Sie dann diese mit req.accepts
testen können:
switch (req.accepts(['html', 'json'])) { //possible response types, in order of preference
case 'html':
// respond with HTML
break;
case 'json':
// respond with JSON
break;
default:
// if the application requested something we can't support
res.status(400).send('Bad Request');
return;
}
Das ist viel mächtiger als der req.xhr
Ansatz.
var isAjax = req.xhr; – Omidam81
möglich duplizieren http://stackoverflow.com/questions/18902293/nodejs-validating-request-type-checking-for-json-or-html –
Fügen Sie einfach einen Parameter hinzu, wenn Sie XHR anfordern. – modernator