web-dev-qa-db-ja.com

すべてのHTTPリクエストでCookieが送信されないようにすることは可能ですか?

私は最近(ここで: すべてのWebリクエストはブラウザのCookieを送信しますか? )、すべてのHTTPリクエストには、同じドメインに対してリクエストが行われるたびに、ドメインに関連するCookieが含まれていることがわかりました。

これを考えると、たとえば、リクエストがブラウザ経由ではなくNode.jsから送信された場合はどうなりますか?リクエストで情報が送信されない可能性はありますか?ブラウザのリクエストで送信されないようにすることもできますか?

13
Defesa Esquerdo

ブラウザ

ブラウザがCookieを送信するのを防ぐことはできません

これが、一般的に 推奨 (Yahoo開発者のベストプラクティス、コンポーネントにCookieのないドメインを使用するセクションを参照)がCookieのない別のドメインからcss、画像などの静的コンテンツを提供する理由です。

ブラウザが静止画像をリクエストし、リクエストと一緒にCookieを送信する場合、サーバーはそれらのCookieを使用しません。したがって、正当な理由なしにネットワークトラフィックを作成するだけです。静的コンポーネントがCookieなしのリクエストでリクエストされていることを確認する必要があります。サブドメインを作成し、そこにすべての静的コンポーネントをホストします。


プログラムで

任意のプログラミング言語から、代わりに必要に応じてを選択できますクッキーを送るかどうか。

ライブラリは単一のリクエストを行うように作成されているため、Cookieの管理はプログラマーが行います。

したがって、Cookieを返す最初のリクエストを行う場合は、Cookieを明示的に読み取り、ローカルのどこかに保持し、必要に応じて最終的に同じサーバーへの2番目のリクエストに入れる必要があります。

したがって、NodeJSから、リクエストに明示的にCookieを追加しない場合、http呼び出しはCookieを保持しません。

11

Fetchオプションをcredentialsに設定してomitを使用できます。

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

5
MGal

プロキシサーバーでCookieを取り除くことができます。たとえば、当社の製品 WinGate を使用すると、リクエスト(およびレスポンス)を変更できます。これを使用して、リクエストのCookieヘッダーをクリアできます。

ただし、これにより、CookieがセッションIDの転送に使用され、サーバーがブラウザが行う各接続/要求を同じ「セッション」からのものとして識別できるため、多数のWebサイトが正しく機能しなくなります。 HTTP自体にはセッションの概念はありません。

免責事項:私はWinGateを製造しているQbikで働いています。

0
Adrien