本文抄襲:http://blog.csdn.net/ray_adon/article/details/6960724
在做項目是 是用了iframe,iframe發起ajax請求,服務器端報session空指針的異常.
當然session在登錄的時候已經賦值了.
如果頁面中采用Javascript的window.location.href=''這樣的方式來重定向的話,系統會認為這是另一個新的請求,產生一個 新的SessionId,導致原Session同樣的丟失所以對於重定向,還是使用Response.Redirect()(c#)為好
除了Ifrmae有丟Session問題外,frameset也有同樣的問題Frameset的問題更不確定,是有時會丟,有時不會丟,這更認人頭痛,在網上找到了一個方法,在頁面page_onload里添加一語句:
Response.AddHeader("P3P","CP=CAO PSA OUR");
FrameSet中的Session丟失問題就解決了至於里面具體的原因 也沒時間去搞懂了
最簡單的方法就是在iis里設置
解決辦法
response.addHeader("P3P","CP=CAO PSA OUR")。
不過難道我們需要在每個頁面都加這個么?
不需要的
如果有權配置IIS服務器
打開IIS
管理工具——〉選擇一個網站——〉屬性——〉http頭,增加一個http頭
然后輸入頭名:P3P
輸入頭內容:CP=CAO PSA OUR
如果沒有權限配置IIS服務器,但是你用的是asp.net的話
可以用httpmodual來實現在全部頁面或者部分頁面頭部插入所需要的標志
本站點的某個目錄就是這樣實現的
下面是java的解決辦法之一,也是我的解決辦法,不過個方法不太好:
直接往響應里加一個P3P的header
response().addHeader("P3P", "CP=\"IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA\""); 其中CP=“XXX XXXX”這些是有具體含義的:
CP就是compact policies的意思.
