簡體   English   中英

React 中的 Axios:GET 請求有效,PUT 未經授權返回

[英]Axios in React: GET Request works, PUT returns unauthrorized

我對 Axios 有一個非常奇怪的行為。 我想執行 PUT 請求,但收到 401(未經授權)

"PUT /update_todo/62a4cb75d7aa95ab6a70f202 HTTP/1.1" 401 Unauthorized

快速API

@app.put("/update_todo/{id}")
async def update(id: str, user=Depends(manager)):
    item = await update_todo(id, user)
    return Todo(**item)

反應

  const update_todo = (id) => {
    axios
      .put(`http://127.0.0.1:8000/update_todo/${id}`, {
        headers: { Authorization: `Bearer ${token}` },
      })
      .then(() => {
        getAllTodos(token);
      });
  };

當我將端點更改為get時,一切正常,錯誤消失。

"GET /update_todo/62a4cb75d7aa95ab6a70f202 HTTP/1.1" 200 OK

在我的后端,我設置了以下內容:

app.add_middleware(
    CORSMiddleware,
    allow_origins= ["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

這種行為很奇怪,我通常希望每個端點都以相同的方式工作。 有誰知道我在這里做錯了什么?

弄清楚了:

PUT期望數據作為第二個參數。

  const update_todo = (id) => {
    axios
      .put(
        `http://127.0.0.1:8000/update_todo/${id}`,
        {},
        {
          headers: { Authorization: `Bearer ${token}` },
        }
      )
      .then(() => {
        getAllTodos(token);
      });
  };

添加一個空字典作為數據解決了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM