2013年1月1日 星期二

系統Memo - Cookie的使用

串流服務的http request分兩種,一種是manifest request,一種是chunk request;(manifest request: http://myserver.com/videopath/sample.ism/manifest?queryString,chunk request: /videopath/sample.ism?QualityLevels(128000)&Fragments(audio=460683900))

queryString只有在manifest request裡才會出現,也無法用程式加在接下來的chunk request上,所以為了辨別連線是屬於哪一個使用者,想到的最好解法就是使用cookie。

cookie的限制有以下幾點:
1. 無法即時改變cookie的值:cookie儲存在client端,在server端建立並設定值之後,由response帶過去client,下一次的request才會抓的到cookie;要改變其中的值或是刪除它,都必須由response通知client端,也就是cookie的變更一定存在request和response的時間差。

2. 瀏覽器的安全設定不相同:由於服務是由兩台不同domain的server提供,認證程式發給的cookie屬於第三方,這方面Chrome比較開放,並不禁止任何第三方cookie寫入,對認證沒有什麼影響;IE有限制第三方cookie,必須在cookie header中加入P3P設定 - HttpContext.Current.Response.AddHeader("P3P", "CP=\"CAO PSA OUR\""); Safari一樣有限制第三方cookie,且對於Domain的認定並不是看cookie內的設定來決定,而是直接看來源,這就很麻煩了,代表為了Safari一種瀏覽器,我必須將兩種服務放在同一個domain下。

3. 相同的request url不會更新cookie:也就是說,如果我要把cookie的值當作session用,我必須確定不同session的request url不會一樣,所攜帶的cookie值才會不一樣;經測試,相同的url無視於response的更新指令,而被瀏覽器視作cookie無須更新。

4. cookie允許設定string以外的值,但是request只取的到string的值

總而言之,cookie並不好用,
如果能夠像Wowza那樣將sessionid加在url上就不用被cookie搞了。


沒有留言: