如何在 Node Express JSON/HTML 中检测请求类型



我只想知道传入的请求是标准页面加载还是来自ajax请求。

基本上,我想为我的 ajax 和正常加载页面使用相同的控制器。

目前我正在使用:

      console.info(req.get('Content-Type')); //undefined.

这是我正在使用的节点代码

getFixtures: function (req, res) {
  var passData = {}
  console.info(req.get('Content-Type'));
  passData.params = req.params;
  leagues(app).getLeagues(passData)
    .then(filterBarFixtures)
    .then(function () {
      res.render('games', {
        title: 'Fixtures and Results',
        passData: passData
      })
    });
  }
app.get('/fixtures/', controllers.getFixtures);

2 加载同一控制器的方式

打开浏览器并导航到/fixtures

$.ajax({
  method: "GET",
  url: "/fixtures"
})

您需要在客户端请求中设置要在服务器中查找的标头,或者设置搜索/查询参数

但是,当您使用jQuery时,您无需担心

jQuery $.ajax使用 XMLHttpRequest ,它设置X-Requested-With=XMLHttpRequest请求标头

此外,如果请求是针对JSON(使用具有适当设置或$.getJSON$.ajax),jQuery通常会设置Accept:application/json, text/javascript, etc

请注意,我说"通常"是为了遮住我的屁股,以防万一在某些奇怪的浏览器中这不会发生:p

您对以下方面的评论

beforeSend: function(request) { request.setRequestHeader("ajax",true); }

可能是最安全的选择,因为该标头保证存在,因此这是要在服务器端查找的标头。