web-dev-qa-db-ja.com

Cookieなしのサブドメインを実装するにはどうすればよいですか?

Cookieのないサブドメインは、多くの目的で有益であると考えられています。

  • ネットワークのオーバーヘッドを節約します[1]。
  • 特定のタイプのキャッシング[7]に必要です(例:Varnishのようなリバースプロキシ)。

実装する最も簡単な方法は、メインドメインのサブドメイン(DNSのAまたはCNAMEホストレコード)を作成し、Webサーバーに仮想ホストを設定して、最後に共有サブドメインでCDNを構成することです。 [2]は、ApacheでCookieを使用しないVhostを次のように構成することを提案しています。

<VirtualHost *:8081>
  ServerName cdn.example.com
  <Directory /var/www/example >
    RequestHeader unset Cookie
    Header unset Set-Cookie
    […]
  </Directory>
</VirtualHost>

Drupalでは、[3]で提案されているように、共有サブドメインを持つCDNを「CDN」モジュールとCDNマッピングで実装できます。

http://css.example.com|.css
http://js.example.com|.js
http://img.example.com|.jpg .jpeg .gif .png .ico

この時点で、CSS、JS、および画像はそれぞれのサブドメインを介して配信されます。ただし、firebugによると、これらのオブジェクトにはまだCookieが添付されているため、Varnishはそれらを効率的に(またはまったく)キャッシュできません。

これらは、CDNサブドメインimg.example.comを介して配信される画像に添付されるいくつかのサンプルCookieです。

__utma=192369400.1671803289.1403302173.1403302173.1403302173.1;
__utmz=192369400.1403302173.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);
__utmv=192369400.|1=User%20roles=anonymous%20user=1;
__utma=164879789.945246956.1281184906.1403129675.1405102008.2582;
__utmc=164879789; __utmz=164879789.1396142298.2568.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);
__utmv=164879789.authenticated%20user%2CSysop|1=User%20roles=anonymous%20user=1

これらのCookieはすべて、メインドメインwww.example.comから/に属して設定されます。他のCookieを設定するアプリケーション/モジュールはわかりませんが、Drupalユーザーロールを含むものは、Drupalによって明確に設定されています。画像からそれらを削除するにはどうすればよいですか。ここが間違っている?

他のCookieの一部は、おそらく「すべてのサブドメインをカバーするためにドメイン全体で設定される」[6]である「Google Analytics」モジュールによっておそらく設定されます。ただし、このモジュールでは./admin/settings/googleanalytics、if GAは1つのドメインまたは複数のサブドメインを追跡することになっています(もちろん、「単一ドメイン」を選択しました)。

Drupal(私の場合はPressflow)で実際にCookieなしのサブドメインを許可するには、追加の機能が必要ですか?)たとえば、drupal.orgには「Cookieなしのサブドメイン」モジュールがあります[4](文書化されていません。 dev release;ごく少数のユーザーです。これが必要ですか、それとも別の方法がありますかoutside Drupalの例(ApacheまたはVarnish構成など)([5]は、「ワニスは実際にはリダイレクトを行います」)?

[1] developer.yahoo.com/performance/rules.html#cookie_free
[2] webmasters.stackexchange.com/questions/1772/how-do-i-set-up-a-cookie-less-domain
[3] www.drupal.org/project/parallel
[4] www.drupal.org/project/cookieless_subdomain
[5] serverfault.com/questions/275728/varnish-serving-static-files-from-subdomains-for-better-page-load-speed
[6] serverdown.ttwait.com/que/275728
[7] www.ravelrumba.com/blog/static-cookieless-domain/(Wordpress)

5
user153878

これらのすべてのCookieはメインドメインwww.example.comから/に属して設定されます

$cookie_domainの値settings.php

/**
 * Drupal automatically generates a unique session cookie name for each site
 * based on its full domain name. If you have multiple domains pointing at the
 * same Drupal site, you can either redirect them all to a single domain (see
 * comment in .htaccess), or uncomment the line below and specify their shared
 * base domain. Doing so assures that users remain logged in as they cross
 * between your various domains. Make sure to always start the $cookie_domain
 * with a leading dot, as per RFC 2109.
 */
# $cookie_domain = '.example.com';

先頭の「。」 Cookieはサブドメインにも適用されることを意味します。

より具体的な方法を試して、drupal Cookieドメインを制限することができます。

$cookie_domain = '.www.example.com';
2
David Thomas