我有一个在 AWS Lambda (ASP.NET Core 3.1) 上运行的微服务,并使用具有自定义域的 API Gateway 进行发布。
在本地运行,一切正常,网站正常,图像已加载,图标也已加载。
部署到 Lambda+API,站点正常工作,加载图像(PNG、JPG)、加载脚本,但未加载 favicon.ico。返回无效图像。对于 PNG、JPG、CSS、JS 或任何其他静态内容没有特殊配置,它开箱即用。
网站图标有什么陷阱吗?
最佳答案
以下解决方案对我有用。
不要使用 API Gateway 来提供 favicon.ico,而是将其上传到 S3 并使其成为公共(public)对象。从 S3 控制台获取此对象的 HTTPS url。然后在您的 Lambda 函数中,重定向到它。
在我的例子中,这是一个 AWS Chalice (Python) 应用程序,因此路由逻辑的实现如下:
@app.route('/favicon.ico')
def favicon():
return Response(body='', headers={'Location': 'https://s3.amazonaws.com/YOUR_BUCKET_NAME/favicon.ico'}, status_code=301)
虽然不是绝对必要,但您也可以在 HTML 中包含标记来指示网站图标的位置,如下所示:
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
关于asp.net-core - AWS API网关+Lambda : favicon issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62557216/