php editor Strawberry は、ブラウザによる Cookie の保存に関する問題を紹介します。 Golang バックエンドを使用して Cookie を送信すると、ブラウザーが Cookie を保存しないことがあります。これには、ブラウザのプライバシー設定やコードの問題など、さまざまな理由が考えられます。この記事では、この問題を詳しく調査し、Golang バックエンドによって送信された Cookie をブラウザーが正しく保存できるようにするための解決策をいくつか紹介します。はじめましょう!
この質問は何度も寄せられていると思いますが、ほとんどの回答を試してみましたが、まだ解決できません。
net/http パッケージと js フロントエンドを備えた golang API があります。機能があります
リーリーこの関数はユーザーがログインするときに呼び出され、他のすべてのエンドポイントに送信されるようにします。これは郵便配達員の期待と一致しています。しかし、ブラウザに関しては、Cookie を記憶させることも、他のエンドポイントに送信することもできないようです。
エンドポイントを使用したjsの例
リーリーgolang で samesite
属性を設定するか、js で credential: "include"
およびその他の回答を使用しようとしましたが、成功しませんでした。
コメントでの議論のおかげで、この問題に関するいくつかのヒントを見つけました。
私は document.cookie
を使用して Cookie を保存します。 API fetch
からの応答で res.cookie
を呼び出すと値のみが返されるため、オプションを手動で設定しました。例は、document.cookie = `gocookie=${res.cookie};path=/;domain=localhost;
です。
この質問は、以前の質問とコメントで再度回答されています。問題は、正しい credentials:'include'
(複数形) の代わりに credential:'include'
を使用したことでした。
API とフロントエンドが同じホスト上にない場合は、API とフロントエンドの両方を変更する必要があります。
###フロントエンド### ヘッダーを返す API エンドポイントにユーザーをリダイレクトすることです。このソリューションは、Cookie を追加のドメイン (API が送信したため、API のドメイン) に登録するようにブラウザーに指示します。
また、フロントエンドに
を含める必要があります。
api
フロントエンドがユーザーをリダイレクトし、応答に Cookie を設定するエンドポイントを公開する必要があります。これを省略すると、API のドメインを手動で設定する代わりに、ブラウザーによってドメインが自動的に設定されます。
cors を処理し、js が cookie を正常に送信できるようにするには、cookie に
samesite=none 属性と secure
属性を設定し、https 経由で API を提供する必要があります (簡単にするために、私はングロク)。
###このような###
リーリー
と
document.cookie の使用の違いも読むことをお勧めします。これは私が抱えていた問題の 1 つでした。
### お役に立てれば。
以上がブラウザは Golang バックエンドによって送信された Cookie を保存しませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。