最近在開發一個新浪微博的第三方應用的項目(http://apps.weibo.com/weilvyou),在項目中用到了session 。在測試時發現session 取不到值,以為是session賦值除了問題,但是在Chrome中一切正常,故排除此原因。那問題肯定出在瀏覽器身上里。於是一步一步調試,發現在IE中,如果頁面跳轉,SessionId 就改變了,問題找到了。然后看了人家其他的一些App,發現他們的請求中
有這樣一項頭部信息——P3P。
出於隱私安全的考慮,IE會丟失Iframe中的Cookie,IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)協議默認阻止第三方無隱私安全聲明的cookie,Firefox、Chrome 不存在此問題。
我們知道Session 其實就是基於Cookie的。客戶端在第一次與服務器建立會話時,會分配給客戶端一個隨機的sessionId,並存於客戶端cookie中,然后在之后的請求中,會帶上這個Cookie,如果在客戶端找不到這樣的Cookie,那么服務器就會重新分配一個。
那么要解決這個問題就是要在請求時添加“P3P”協議。
在Asp.Net中可以這樣做:
在Global.asax.cs文件中添加如下所示代碼:
原文地址:http://www.cnblogs.com/xumingxiang/archive/2012/09/05/2671690.html
作者 :
徐明祥
出處: http://www.cnblogs.com/xumingxiang
版權:本文版權歸作者和博客園共有
轉載:歡迎轉載,為了保存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文連接;否則必究法律責任
出處: http://www.cnblogs.com/xumingxiang
版權:本文版權歸作者和博客園共有
轉載:歡迎轉載,為了保存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文連接;否則必究法律責任