我得到req.params.id =' favicon.ico'当我发送GET /无论是自定义路线' GET /:id'

时间:2016-04-24 22:33:25

标签: javascript node.js sails.js

(Sails.js)

如何忽略favicon浏览器请求并获取我想要的ID?

router.js

  'GET /:id': 'UrlController.findOne'

UrlController.js

  /**
   * `UrlController.findOne()`
   */
  findOne: function (req, res) {
    var id = req.param('id');

    console.log(id);

    Url.findOne({where: {id: id}}).exec(function(err, url) {
      return res.redirect(url.target);
    })
  },

如何在路由之前简单地优先考虑静态文件?

3 个答案:

答案 0 :(得分:0)

在该路线返回404之前为/favicon.ico创建一条额外的路线(或者可能是一个奇特的图标)。

或者你选择的库可能支持路由参数的正则表达式过滤器,你可以设置一个只根据长度,字符等匹配有效ID的假设,假设你的ID有某种格式。

您也可以通过在页面中放置<meta>元素来告知浏览器在其他地方查找图标来取消请求。

答案 1 :(得分:0)

我找到了一个更优雅的解决方案:

变化:

router.js

  'GET /:id': 'UrlController.findOne'

要:

  'GET /:id': {
    controller: "UrlController",
    action: "findOne",
    skipAssets: true
  },

还要感谢所有人指导我找到解决方案。

答案 2 :(得分:0)

使用serve-favicon将创建一条路线,从而阻止404.

app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));