我正在使用NodeJS和Express。如何区分普通浏览器请求和AJAX请求?我知道我可以检查请求标头,但Node / Exprsss是否公开了这些信息?
答案 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'飞行前的问题,但它现在的情况......