第三方Cookie存取的問題
如果你在A網站,內嵌一個iFrame裡面放B網站,那麼一般的狀況下,你的B網站是不可能可以存取Cookie的,這意味著你的ASP.NET的Session功能(使用Cookie模式而非Url模式)就會失效。就算你勉強的存入Cookie後,B網站的各頁面還是無法將這個Cookie順利的讀出。
一般來說,都是要進行跨站存取才會遇到這種問題。要解決這種問題只有兩種方法:
- 手動修改瀏覽器的信任原則。(對EndUser來說根本是不可能)
- 加入P3P Header。(The Platform for Privacy Preferences Project)
這裡引用黑暗執行緒大大所說的:
部署P3P的完整程序,應包含建立隱私權保護政策文件(policy.html)、原則檔(policy.xml)、原則參考檔(p3p.xml),其中的細節複雜到要靠額外編輯器工具才能搞定。而且要留意,若是對大眾營運的網站,宣告的隱私權保護政策與實際資料蒐集行為不符,會有吃上官司的風險,不可不慎。
在ASP.NET中加入P3P標頭的語法如下,其中NOI表示不蒐集可識別資料,ADM表示資料為網站管理用...等。詳情可以參考這篇文章「Renjin's blog-為你的網站部署 P3P 隱私權政策」。
Response.Headers.Add("P3P", "CP=\"NOI ADM DEV COM NAV OUR\"");