石建 | Fat Mind

          玩命的cookie

          題記:一個cookie,整個下午都沒有找到解決的辦法。

           

          一、遇到的問題

          1. 情景:訪問http://list.mall.daily.taobao.net/50024400/xxx,當前頁面通過ajax請求廣告,請求的域為http://tmatch.simba.taobao.com/xxx;廣告引擎向頁面種seesion范圍的cookie_back,用于標識翻頁;

                2. 問題:

          點擊當前頁面的翻頁,IE下廣告不翻頁?通過firebughttpwatch對比,發現IEcookie“_back”不正確。開始猜測是引擎種cookie的邏輯存在問題,但很多地方都在使用此接口,均沒有問題。

          且有人的機器翻頁正常,此時懷疑是瀏覽器設置問題?再用httpwatch觀察“http請求頭,發現_back沒有回傳給引擎(其實httpwatchcookies也可以觀察到,如果發送cookie的話,會顯示為Sent;之前只觀察到Received)? 確認是瀏覽器的問題。

          3. 解決:打開IE隱私設計,通常默認設置為,拒絕沒有隱私政策的第三方cookie ...”,意味著_back并沒有成功寫入客戶端,所有請求引擎導致不能正確回傳_back,翻頁失敗。

                   這么說淘寶所有的廣告的翻頁都是不可用的 ?肯定不是。問題在第一方 Cookie 來自您正瀏覽的網站,它們可以是永久的或臨時的;第三方 Cookie 來自您正瀏覽的網站上的其他網站的廣告”,對于瀏覽器“taobao.nettaobao.com”就是不同的兩個網站,所以引擎的_back是無法種在客戶端。此情景是daliy環境,線上的環境訪問的是list.mall.daily.taobao.com,所以不存在第三方cookie”的概念,廣告是可以正確顯示。

           

          二、關于cookie小知識

           

          1.IE Cookie的格式

          第一行名稱,第二行,第三行所屬域” ...比如“.taobao.com”存在cna,此cookie會被瀏覽器自動發送到任何屬于此域的子域;www.taobao.com\taobao.com,后面的是根域,前一個是二級域。xp存放目錄為:C:\Documents and Settings\<username>\Cookies\,文件命名:你的用戶名@生成COOKIEdomain[COOKIE改變的次數].txt

            參考:http://blog.csdn.net/zhangxinrun/archive/2010/07/31/5779574.aspx

           

          2.Js Cookie跨域訪

           http://blog.csdn.net/tongdoudpj/archive/2009/05/10/4166096.aspx

           

          3.cookiesession的關系

          根本的原因:http協議的無狀態性,cookie的出現就是為了解決這個問題。

          session是一種在客戶端與服務器之間保持狀態的解決方案。服務端存儲內容,返回對應的key給客戶端,當下次訪問時,帶上此key,實現狀態的維持。

          session實現:

          1.依賴cookieThe session cookie is stored in temporary memory and is not retained after the browser is closed。(實際測試:IE8,未在1描述的位置找到session級別cookie對應的文件,猜測‘臨時存儲在瀏覽器內存’,當關閉瀏覽器時則丟失key)

          2.url重寫。Servlet規范定義此功能。當瀏覽器禁用cookie時,就算session級別的內容也不會被存儲。resp.encodeRedirectURL(url),且僅當禁用cookie時有效,重寫結果如:http://www.demo.com/cookie.do;jsessionid=19gfy1sg740dl1whwd72lbqlhb

          疑問:server如何判斷,是否需要重寫呢?從實驗現象看,判斷是否收到name=JSESSIONID cookie,若無,則進行url重寫。

                     最好的方式,翻翻tomcatjetty的源碼實現,但未找到對應的代碼。

          關于cookie的詳細信息參見: http://en.wikipedia.org/wiki/HTTP_cookie

           

          posted on 2010-11-08 21:41 石建 | Fat Mind 閱讀(686) 評論(0)  編輯  收藏 所屬分類: 一點理解

          導航

          <2010年11月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          What 、How、Why,從細節中尋找不斷的成長點
          主站蜘蛛池模板: 子洲县| 绵阳市| 尚义县| 祥云县| 会理县| 大丰市| 齐河县| 夏河县| 乌审旗| 江西省| 裕民县| 新河县| 南陵县| 明溪县| 鄄城县| 孟津县| 临颍县| 郴州市| 栾川县| 霍山县| 铜鼓县| 农安县| 喀喇沁旗| 阿坝| 延安市| 横峰县| 科技| 高安市| 怀安县| 广水市| 沙河市| 色达县| 卢龙县| 祁东县| 永登县| 延吉市| 博爱县| 汕尾市| 华坪县| 金昌市| 太原市|