当我将 GET /any 发送到自定义路由“GET /:id”时,我得到 req.params.id = 'favico

I get req.params.id = 'favicon.ico' when I send GET /whatever to custom route 'GET /:id'

本文关键字:id GET req params favico any 自定义 路由      更新时间:2023-09-26

(Sails.js)

如何忽略网站图标浏览器请求并获取我想要的 ID?

路由器.js

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

网址控制器.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);
    })
  },

有什么方法可以在路由之前简单地确定静态文件的优先级?

在该路由之前为/favicon.ico创建一个额外的路由,该路由仅返回 404(或者可能是一个花哨的图标)。

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

您还可以通过在页面中放置<meta>元素来禁止请求,以告诉浏览器在其他地方查找图标(如果有)。

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

改变:

路由器.js

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

自:

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

也感谢大家指导我找到解决方案。

使用 serve-favicon将创建一个路由,从而阻止 404。

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