天天看點

java cookie p3p 跨域

cookie 跨域,什麼是跨域呢,為什麼需要跨域呢?

www.a.com 下有 a.html頁面

www.b.com 下有b.html這個位址

1.例如a.html頁面在域下,a.html頁面中有個img标簽<img src="www.b.cm/b.html"/>

當a.html頁面打開時,就會通路b.html。這裡b.html接受到請求然後向HttpServletResponse   add 名為uid的cookie,這個uid就叫做第三方cookie。在firfox下是支援跨域的,也就是說你用firfox的話這時你浏覽器裡就有一個domain為b.com的cookie   uid。當通路a.html頁面,b.html也就能接收uid這個cookie。 沒什麼好說的......

在ie下就不行了,ie預設是不允許第三方cookie的,也就是uid這個cookie并沒寫入。加個p3p的head就可以成功向ie寫入第三方cookie了。

response.setHeader("P3P","CP=\"NON DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa HISa TELa OTPa OUR UNRa IND UNI COM NAV INT DEM CNT PRE LOC\"");
           

(ie下檢視cookie  \Documents and Settings\{userName}\Local Settings\Temporary Internet Files\   cookie開頭的檔案,\Documents and Settings\{userName}\Cookies\下的并不即時)

2.javax.servlet.http.Cookie中有個 setDomain(String domain)方法,此方法并不能指定不同域。

例如:a.html想寫個domain為b.com的cookie是辦不到的。

setDomain(...)是用來指定cookie屬于同一個域下的子域。

例如:a.html中設定setDomain("bbs.a.com/")是可行的,而setDomain("b.com/")是不可行的。

簡要了解,歡迎指正。