Detecting AJAX requests on NodeJS with Express

后端 未结 2 1343
孤城傲影
孤城傲影 2020-11-30 04:25

I\'m using NodeJS with Express. How can I tell the difference between an ordinary browser request and an AJAX request? I know I could check the request headers but does Node

相关标签:
2条回答
  • 2020-11-30 05:05

    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...

    0 讨论(0)
  • 2020-11-30 05:06

    Most frameworks set the X-Requested-With header to XMLHttpRequest, for which Express has a test:

    app.get('/path', function(req, res) {
      var isAjaxRequest = req.xhr;
      ...
    });
    
    0 讨论(0)
提交回复
热议问题