web-dev-qa-db-ja.com

Cookieのないドメインを設定するにはどうすればよいですか?

パフォーマンスを向上させるには、Cookieのないドメインまたはサブドメインから静的コンテンツ(css、javascriptなど)を提供するのが最善であると読みました。ドメインはデフォルトでCookieがないとは思わない。 Cookieを使用しないことを指定するにはどうすればよいですか?

24
BenV

YSlowPage Speed のようなものがCookieのないドメインを設定するように指示した場合、実際には、何も設定しないドメインからメディアを提供することを意味します。または過去に(グローバルに)何も設定していません。 media.domain.comstatic.domain.comなどのサブドメインを使用することでこれを実現できる場合もありますが、ドメイン全体に適用されるCookieをdomain.comに設定すると、 *.domain.com –このCookieは、domain.comに関連付けられたeveryドメインのすべての要求で、クライアントによってサーバーに送信されます。 。これには、すべてのサブドメインが含まれます。

ドメインでwww.の使用を控えると決めた場合、グローバルCookieが問題になります。 Cookieを設定する特定のサブドメインがない場合、すべてのCookieが機能するには、*.domain.comに設定する必要があります。

このグローバルCookieの問題により、YouTubeのytimg.comなどの場所から提供される静的メディアが表示されるのはこのためです。 ytimg.comは、Cookieを設定できる動的コンテンツを提供しません。つまり、これらのドメインがHTTPリクエストの一部である場合、クライアントからサーバーにCookieは送信されません。

*.domain.comにCookieを設定しないことが確実な場合は、必要に応じてサブドメインを使用できます。 Javascriptを介して別のサイトまたはサービスと統合すると、ほとんどの場合、グローバルドメインCookieが設定されることに注意してください。

Apache(および他のすべてのWebサーバー)では、リクエストに応答する前にヘッダーを設定または設定解除できます。これにより、クライアントがサーバーにCookieを送信する問題は修正されませんが、ドメインがCookieを送信したり、最初に設定したりすることはありません。 Cookieのないドメインから静的ではないコンテンツを提供する場合にのみ問題になり、その目的が損なわれます。

Header unset Cookie
Header unset Set-Cookie 

これにより、既存のCookieおよび新しいCookieを作成するためのヘッダーが設定解除されます。繰り返しますが、Cookieを設定する可能性のある静的ドメインのコンテンツを提供する場合にのみ問題が発生します。これをサイトまたは仮想ホストの構成に配置します(OS、サーバー、およびバージョンに応じて、任意の場所に配置できます)。

26
Bryson

Cookieを使用しないことを指定するにはどうすればよいですか?

Cookieのないドメインを作成するために必要なことではありません-notする必要があることの詳細です... Cookieのないドメインを作成するにはアプリケーションがそのドメインで実行されていることを確認する必要がありますCookieを設定しない。これは通常、ログインがないこと、Googleアナリティクスがないこと、セッションがないことを意味します。つまり、メディアを提供するだけで他には何もありません。明らかにこれは設定に依存します。

最近犯した間違いの1つは、ドメインとサブドメインを区別しなかったことです。私はすべてのメディアをhttp://media.example.comから提供し始めました。これはCookieのないドメインだと思っていましたが、実際はsub-domainであり、メインサイトhttp://www.example.comからのCookie。ドメインレベルで設定されているため、Cookieのないサブドメインを汚染します。ここに私がその問題を解決した方法のリンクがあります: https://serverfault.com/questions/160210/nginx-serve-static-content-from-a-cookieless-domain

6
Tom

Cookieを使用しないことを指定するにはどうすればよいですか?

Cookieを使用しないことを指定する必要はありません。Cookieを使用しないだけです。

3
delete