在 fastapi 中将服务器名称替换为响应 header 中的假服务器名称

Replace server name with fake server name in response header in fastapi

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

 content-length: 122 
 content-type: application/json 
 date: Sat12 Dec 2020 10:18:55 GMT 
 server: uvicorn 

如何将服务器名称更改为新名称作为服务器:firstproject? 以下代码将服务器名称 unciorn 与新名称连接起来

@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 作为响应 header?

编辑

在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 时设置自定义 header。

--header TEXTSpecify custom default HTTP response headers as a Name:Value pair

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

uvicorn my_app:app --header server:firstproject

如果您正在从 python 文件中 运行ning uvicorn。您需要将它们作为元组传递到列表中。

if __name__ == "__main__":
    uvicorn.run("my_app:app", headers=[("server", "firstproject")])

如果您需要“删除”“服务器”header,您可以使用选项 --no-server-header

uvicorn my_app:app --no-server-header

如果您是来自 python 文件的 运行 uvicorn:

if __name__ == '__main__':
    uvicorn.run('my_app:app', server_header=False)