FastAPI重定向给出方法不允许的错误 [英] FastAPI redirect gives method not allowed error

查看:0
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆