动态路由返回favicon.ico而不是Flask中的变量



下午好,

我目前正在开发一个Flask应用程序,我遇到了一个以前从未发生过的错误。我目前正在Flask中设置一个动态路由。这段代码是:

@app.route('/viewcar/<string:carId>')
def viewcar(carId):
print(carId)
car = Car.getCarById(carId)
return render_template("car.html", car=car)

然而,当我将任何变量传递给URL时(比如"http://127.0.0.1:5000/viewcar/4975facbbce511b65e14f44719340029-cf161184-91fc"),当我检查控制台的输出时,它显示carId等于favicon.ico,而不是"4975facbbce511b65e14f44719340029-cf161184-91fc"。你们知道这是什么吗?我以前从没遇到过这种事。提前谢谢。

我今天也遇到了这个问题,但是我注意到,当我在Chrome(版本104.0.5112.101)中启动我的开发flask服务器http://127.0.0.1:5000/时,控制台日志显示它为我从URL抓取的变量抓取了favicon.ico,但是当我使用Safari(版本15.3)时URL变量被正确解析。

现在我开始认为这是一个浏览器相关?

我对烧瓶很陌生,也遇到了这个问题。对我来说,我在模块中有另一个路由,在我打算执行的路由之前执行,变量名在那里被分配,所以似乎下一个(默认?)参数必须在我打算的路由中使用。我确信我只描述了一半正确,但希望它能帮助某人更快地调试他们的问题。

在html文件(本例中为car.html)的head标签中添加以下代码

<link rel="icon" type="image/png" href="favicon.png"/>

问题将会得到解决。

这个问题似乎会导致chrome在本地运行时出现问题,但不是本地safari。此外,当我试图在AWS应用程序运行器上部署我的应用程序时,这个问题在两个浏览器上都存在。添加下面一行代码使其在本地和AWS应用程序运行器

上运行
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'),
'favicon.ico', mimetype='image/vnd.microsoft.icon')

如果有人知道为什么在flask中会发生这种情况,我很想知道。