繁体   English   中英

Express将URL查询编辑到“ favicon.ico”

[英]Express edits URL query to “favicon.ico”

当我使用路由后的URL向我的node.js / express Web服务器发送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正在寻找一个图标,作为页面的子请求:

<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 + '...');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM