Express编辑URL查询为“”;favicon.ico”;

Express edits URL query to "favicon.ico"

本文关键字:favicon ico 编辑 URL 查询 Express      更新时间:2023-10-16

当我在路由后向node.js/express web服务器发送一个带有URL的GET请求时,服务器不会记录所述URL,而是存储favicon.ico:

var express = require("express");
var app = express();
app.get("/:query", function (req, res) {
    var query = req.params.query;
    console.log(query);
})
var port = process.env.PORT || 8080;
app.listen(port,  function () {
    console.log('Node.js listening on port ' + port + '...');
});

所以,当我转到https://my-domain-url.io/http://www.google.co.uk时,控制台上打印的是:favicon.ico而不是http://google.co.uk

有人知道为什么会发生这种情况以及如何预防吗?

(我目前正在使用一个解决方法,使用req.headers.referer,它为我提供了完整的https://my-domain-url.io/http://www.google.co.uk,然后我手动解析它。)

这发生在我身上……这是因为HTML正在寻找一个favicon作为页面的子请求:

<link rel="shortcut icon" href="favicon.ico">

基本上,浏览器请求"favicon.ico"作为脚本参数。在资源调用之前添加斜杠为我解决了这个问题,就像这样:

<link rel="shortcut icon" href="/favicon.ico">

浏览器也有可能自动查找最喜欢的图标。这个解决方案可能对此有所帮助。

一种方法:

var express = require("express");
var app = express();
app.get("/*", function (req, res, next) {
    var query = req.params[0];
    console.log(query);
    next(); //you need add next, otherwise your query will hang there
})
var port = process.env.PORT || 8080;
app.listen(port,  function () {
    console.log('Node.js listening on port ' + port + '...');
});