首頁  >  文章  >  後端開發  >  瀏覽器未儲存cookie

瀏覽器未儲存cookie

王林
王林轉載
2024-02-09 10:30:09585瀏覽

瀏覽器未儲存cookie

php小編柚子在這裡為大家介紹一個常見的問題-瀏覽器未儲存cookie。當我們日常使用瀏覽器進行網頁存取時,cookie是一種常見的機制,它可以幫助網站記住使用者的登入狀態、個人化設定等資訊。然而,有時候我們會遇到瀏覽器未儲存cookie的情況,導致登入狀態遺失、無法正常瀏覽網頁等問題。那麼,為什麼會出現這種情況呢?下面就讓我們一起來探究一下吧!

問題內容

嘗試了 15648070,15648070 不幸的是沒有成功:)

您好,第一次使用 gin 建置 api,我在瀏覽器上設定 cookie 時遇到一些問題

我的意思是,當在dev 工具 上查看請求時,我看到了set-cookie 標頭和正確的值,也在該請求中的cookie 選項卡下我還看到了cookie

主要問題是它沒有保存在我的瀏覽器上(dev工具 -> application -> storage -> cookies和我的cookie不存在)

後端:

router.use(cors.new(cors.config{
        allowmethods:     []string{"get", "post", "put", "patch", "delete", "head", "options"},
        allowheaders:     []string{"origin", "content-length", "content-type"},
        maxage:           12 * time.hour,
        allowallorigins:  true,
        allowcredentials: true,
    }))

    router.post("/users/login", server.loginuser)
func (server *server) loginuser(ctx *gin.context) {
        ...
    ctx.setcookie("access_token", accesstoken, 3600, "/", "localhost", false, true)
    ctx.setcookie("refresh_token", refreshtoken, 3600, "/", "localhost", false, true)

    ctx.json(http.statusok, gin.h{"ok": true, "payload": rsps})

}

前端:

const login = async () => {
    const res = await fetch("http://localhost:3000/users/login", {
      method: "POST",
      body: JSON.stringify({ username, password }),
    });
    const data = await res.json();
    console.log(data);
  };
  const handleFormSubmit = (e) => {
    e.preventDefault();
    login();
  };

  return (
    <div>
      <h1>Login Page</h1>
      <form onSubmit={handleFormSubmit}>
         ...
        <button type="submit">Login</button>
      </form>
    </div>
  );

任何線索..?

解決方法

(感謝 Discord 上的 #Reactiflux 頻道)

我錯過了兩件事..

伺服器端:

  • AllowHeaders headers -> 新增 "Access-Control-Allow-Headers", "Authorization"

  • 新增 AllowOriginFunc -> 意味著不允許 * 而不是特定域

前端:

  • withCredentials: true 新增到我的 axios 設定

以上是瀏覽器未儲存cookie的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除