Python 3.x 在fastapi的响应头中将服务器名称替换为假服务器名称

Python 3.x 在fastapi的响应头中将服务器名称替换为假服务器名称,python-3.x,fastapi,Python 3.x,Fastapi,我使用uvicorn作为服务器,使用FastAPI运行应用程序。在Swagger中执行端点url时,以下消息显示在服务器响应的响应头中 content-length: 122 content-type: application/json date: Sat12 Dec 2020 10:18:55 GMT server: uvicorn 如何将服务器名称更改为新名称,即server:firstproject? 下面的代码将未绑定的服务器名称与新名称连接起来 @app.middle

我使用uvicorn作为服务器,使用FastAPI运行应用程序。在Swagger中执行端点url时,以下消息显示在服务器响应的响应头中

 content-length: 122 
 content-type: application/json 
 date: Sat12 Dec 2020 10:18:55 GMT 
 server: uvicorn 
如何将服务器名称更改为新名称,即server:firstproject? 下面的代码将未绑定的服务器名称与新名称连接起来

@app.middleware("http")
async def add_custom_header(request, call_next):
    response = await call_next(request)
    response.headers['server'] = 'firstproject'
    return response
这将提供以下输出

content-length: 122 
 content-type: application/json 
 date: Sat12 Dec 2020 10:19:33 GMT 
 server: uvicornfirstproject 
如何在响应头中将服务器名称更改为server:firstproject

编辑

在start_server.py中

 import uvicorn

from app.main import app

if __name__ == "__main__":
    uvicorn.run("start_server:app --header server:firstproject", host="0.0.0.0", port=8000, reload=True)

    
给出以下错误

INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [15256] using statreload
ERROR:    Error loading ASGI app. Attribute "app --header server:firstproject" not found in module "start_server".

我从Visual studio运行代码

您可以在运行uvicorn时设置自定义标题

--标题文本
将自定义默认HTTP响应标题指定为名称:值对

当您这样运行它时,它将覆盖默认服务器名称

uvicorn我的应用程序:应用程序--头服务器:第一个项目
如果您是从python文件运行uvicorn。您需要将它们作为元组传递到列表中

如果名称=“\uuuuu main\uuuuuuuu”:
run(“my_app:app”,headers=[(“server”,“firstproject”)]))

我已经按照您的建议编辑了问题,以显示添加后的错误。您运行错误,我更新了我的答案。它在localhost中工作。当我将相同的代码推送到Linode并再次运行时,uvicorn显示在服务器名中,而不是假服务器名firstprojectHmm,这很奇怪。您是否在两个版本之间进行负载平衡?抱歉。在添加传递元组(python代码)和uvicorn my_app:app--header server:firstproject(运行期间)之后,我在linode中也得到了响应。感谢您的快速响应