在SubDomain下,完全移除RootDomain的Cookies

公司的根網域(假設為:slashlook.com)因為行銷的需求,被加入了Root Domain等級的Google Analysis Cookies(GA),然而在公司內部的應用網站(例如:app.slashlook.com),卻不需要這些GA Cookies的追蹤,也就是往來之間,我們不需要諸如:__utma、__utmb、__utmc、__utmt、__utmz這些無用的數據傳輸與干擾。

那麼,如何顧及其他網站的追蹤需求,又不讓這些根網域的餅乾屑掉到家中呢?

Cookies小常識

  1. 子網域(app.slashlook.com)可以建立根網域(slashlook.com)的Cookies。
  2. 一旦根網域的Cookies被建立,那麼所有的子網域中(例如:www.slashlook.com、mail.slashlook.com、erp.slashlook.com...)中的任何一次Http Request都會被夾帶根網域(slashlook.com)的資訊,自Http Header回傳至Server。
  3. 反過來說,子網域亦可以刪除根網域(slashlook.com)的Cookies。

好了,既然發想已經完成,接下來就是程式碼的實作了。

刪除根網域下所有的Cookies

我故意把Javascript寫成匿名,這樣你Copy回去就可以直接貼上使用了。

(function () {
  var aryCookies = document.cookie.split(';');
  for (var i = 0; i < aryCookies.length; i++) {
    var iEqual = aryCookies[i].indexOf("=");
    var cName = iEqual > -1 ? aryCookies[i].substring(0, iEqual) : aryCookies[i];
    document.cookie = cName + "=; Path=/; domain=.slashlook.com; expires=Thu, 01 Jan 1970 00:00:01 GMT";
  }
})();

註釋一:刪除時寫成「domain=slashlook.com」也可以喔,點(dot)會在Client端自動被加回。(RFC 2965)

註釋二:這樣的寫法並不會刪除到瀏覽器自帶的Session ID(SSID),所以不必緊張。

Delete Remove Cookies GoogleAnalysis __utma __utmb __utmc __utmt __utmz RootDomain SubDomain