網上有這類文章,一般表現為a站點有iframe,iframe的src指向b站,b站登錄后保存該域cookie,下次再訪問的時候就可以帶上這個cookie,但IE下失效。
而我的情況有些類似,但不盡然;
我的是a站有iframe,但src是指向自己(如,login.aspx頁)。然后login有個form,action到B站點,然而去B站點就只是拿一些資料,加密后給回a站點進行登錄(cookie寫入)。
但發現此時的cookie已經寫不進了。
這里應該就是session已經變了,說應該是因為我沒確認過。
解決方法也很簡單,和網上的一樣。
問題根源:
IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)協議默認阻止第三方無隱私安全聲明的cookie,Firefox目前還不支持P3P安全特性,firefox中自然也不存 在此問題了。Mircosoft對此的具體描述可以參見 Privacy in Internet Explorer 6
解決辦法是在要嵌入的內容中(iframe指向的站點)輸出P3P的主機頭聲明:
給個連接 百度文庫
http://wenku.baidu.com/view/ea504514866fb84ae45c8d2c.html
貼個C#代碼
if (Request.Browser.Browser.ToUpper().Contains("IE"))
Response.Headers.Add("P3P", "CP=CAO PSA OUR");