使用Express检测NodeJS上的AJAX请求
我用Express来使用NodeJS。 我怎样才能区分普通的浏览器请求和AJAX请求? 我知道我可以检查请求标题,但Node / Exprsss公开此信息?
大多数框架将X-Requested-With
头部设置为XMLHttpRequest
,Express对此进行了testing:
app.get('/path', function(req, res) { var isAjaxRequest = req.xhr; ... });
如果没有设置req.xhr
,比如说在Angularjs这样的框架中, 它被删除了 ,那么你也应该检查这个头是否可以接受一个JSON响应(或者XML,或者是你的XHR作为响应而不是HTML发送的)。
if (req.xhr || req.headers.accept.indexOf('json') > -1) { // send your xhr response here } else { // send your normal response here }
当然,你必须稍微调整第二部分来匹配你的用例,但这应该是一个更完整的答案。
理想情况下,angular色团队不应该删除它,但实际上应该find一个CORS的飞行前问题的更好的解决scheme,但现在它是如何rest…