Обнаружение AJAX-запросов на NodeJS с помощью Express


Я использую NodeJS с Express. Как я могу отличить обычный запрос браузера от запроса AJAX? Я знаю, что могу проверить заголовки запросов, но предоставляет ли Node/Exprsss эту информацию?

2 64

2 ответа:

большинство фреймворков устанавливают X-Requested-With заголовок XMLHttpRequest, для которого Экспресс-тест:

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
}

конечно, вам придется немного настроить вторую часть, чтобы соответствовать вашему usecase, но это должен быть более полный ответ.

в идеале угловая команда не должна была его удалять, но должна на самом деле нашли лучшее решение для предполетной проблемы CORS, но теперь это так...