Detecting AJAX requests on NodeJS with Express
In case the req.xhr
is not set, say in frameworks such as Angularjs, where it was removed, then you should also check whether the header can accept a JSON response (or XML, or whatever your XHR sends as a response instead of HTML).
if (req.xhr || req.headers.accept.indexOf('json') > -1) { // send your xhr response here} else { // send your normal response here}
Of course, you'll have to tweak the second part a little to match your usecase, but this should be a more complete answer.
Ideally, the angular team should not have removed it, but should have actually found a better solution for the CORS' pre-flight problem, but that's how it rests now...