使用Express检测NodeJS上的AJAX请求

时间:2013-04-11 09:22:38

标签: ajax node.js express

我正在使用NodeJS和Express。如何区分普通浏览器请求和AJAX请求?我知道我可以检查请求标头,但Node / Exprsss是否公开了这些信息?

2 个答案:

答案 0 :(得分:114)

大多数框架将X-Requested-With标头设置为XMLHttpRequest,Express对其进行了测试:

app.get('/path', function(req, res) {
  var isAjaxRequest = req.xhr;
  ...
});

答案 1 :(得分:42)

如果未设置req.xhr,例如Angularjs,where it was removed等框架,那么您还应检查标头是否可以接受JSON响应(或XML,或XHR发送的任何内容)作为回应而不是HTML)。

if (req.xhr || req.headers.accept.indexOf('json') > -1) {
  // send your xhr response here
} else {
  // send your normal response here
}

当然,您必须稍微调整第二部分以匹配您的用例,但这应该是一个更完整的答案。

理想情况下,有角度的团队不应该删除它,但实际上应该找到一个更好的解决方案CORS'飞行前的问题,但它现在的情况......