FastAPI重定向给出方法不允许的错误 [英] FastAPI redirect gives method not allowed error
本文介绍了FastAPI重定向给出方法不允许的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经创建了一条登录路线,我将在其中发布我的表单数据并设置Cookie。设置Cookie后,我重定向到";/main";,在那里我得到{detail:"Method Not Allowed"}
作为响应。
@app.post("/login")
async def login(request:Request):
response = RedirectResponse(url="/main")
response.set_cookie(key="cookie",value="key-value")
return response
@app.get("/main")
async def root(request:Request, cookie: Optional[str] = Cookie(None)):
if cookie:
answer = "set to %s" % cookie
else:
answer = "not set"
return {"value": answer}
我进一步检查了控制台,发现在重定向过程中向";/main";发出了POST请求,因此导致了错误。当我将其更改为app.post("/main")
时,它工作正常。如何避免此错误?我不想每次都通过POST请求访问";/main";。提前谢谢。
推荐答案
我发现在FastAPI中,Starlette响应默认有代码307,它在重定向期间保留方法,因此是POST请求。我通过在返回响应前添加response.status_code = 302
解决了此问题。
这篇关于FastAPI重定向给出方法不允许的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文