首頁 > 後端開發 > Python教學 > 為什麼我的 FastAPI Cookie 沒有出現在我的 React 前端中?

為什麼我的 FastAPI Cookie 沒有出現在我的 React 前端中?

DDD
發布: 2024-12-05 04:30:10
原創
229 人瀏覽過

Why Aren't My FastAPI Cookies Showing Up in My React Frontend?

FastAPI:在 React 前端處理 Cookie

概述

FastAPI 為後端開發啟用 Cookie 處理。但是,在 React 前端中傳送和接收 cookie 可能需要特定配置才能確保正常功能。

為什麼Cookie 沒有返回React 前端

如果您的FastAPI 後端沒有將cookie 返回到您的React 應用程序,有幾個因素可能會導致此問題:

1.無效的Axios請求:

  • 透過將 withCredentials 屬性設為 true,確保您的 Axios 要求正確傳送憑證。
  • 驗證 Axios 請求 URL 是否與您的網域符合FastAPI 後端。使用 localhost 和 127.0.0.1 作為不同的網域可能會破壞 cookie 建立。

2. CORS 限制:

  • 由於跨域請求,您需要在 FastAPI 應用程式中明確設定 CORS 設定。
  • 使用 CORSMiddleware 和allow_credentials= 指定允許的來源True 則啟用跨網域 cookie用法。

3. FastAPI 中的 Cookie 設定:

  • 確保使用 response.set_cookie() 方法在 FastAPI 路由中正確設定 Cookie。
  • 驗證 httponly 參數是否設定為True 可防止客戶端存取 cookie。

4. SameSite 屬性:

  • cookie 的 SameSite 屬性會影響其在不同領域的可用性。
  • 將其設定為 SameSite=Lax 或 SameSite=Strict 以控制 cookie 的可存取性和防止跨站攻擊。

FastAPI 範例Cookie 設定:

from fastapi import FastAPI, Response

app = FastAPI()

@app.get('/')
def main(response: Response):
    response.set_cookie(
        key='token',
        value='some-token-value', 
        httponly=True,
        samesite='Lax'  # or 'Strict'
    ) 
    return {'status': 'success'}
登入後複製

有憑證的 Axios請求範例:

await axios.post(url, data, {withCredentials: true}))
登入後複製

重要說明:

  • 請記住,使用通配符(*) 表示Access-Control-Allow-Origin可能會限制通訊類型並阻止發送cookie 和授權標頭。
  • 確保前端域明確包含在允許的來源中,並且將allow_credentials=True 設定為正確的cookie 處理。

以上是為什麼我的 FastAPI Cookie 沒有出現在我的 React 前端中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板