場景一:
A網站全站均為UTF-8編碼,B網站全站為GB2312編碼。
A網站提供一段JS代碼供B網站調用,該代碼會動态生成一個FORM表單,以收集送出上來的資料。
B網站此時開始送出資料,但送出上來的中文均為亂碼。
現象的産生是由于二個網站編碼不一緻而導緻的,一般情況下使二個網站的編碼一緻即可。
如果無法統一編碼該怎麼辦?
FORM有一個accept-charset屬性
<form method=”post” action=”…” accept-charset=”utf-8″>
…
</form>
測試成功,但在IE下不成功,需要一個HACK來解決:
在form的onsubmit事件觸發時動态改變document的編碼,即:
onsubmit=”document.charset=’utf-8′;”
場景二:
A網站提供一個頁面供其它網站進行Iframe調用,該頁面使用了SESSION,并進行了SESSION判斷。
現象:
B網站IFRAME了A網站的頁面,總顯示SESSION過期,但直接在浏覽器中打開該頁面卻又是正常的。
這是由于浏覽器的安全性所緻,SESSION依賴于COOKIE,A與B是二個完全不同的域,A網站沒法去讀取B網站下的COOKIE,是以 SESSION也就失效了。
解決辦法:
A網站的頁面在輸出頭上附加一個P3P屬性,值為CP=CAO PSA OUR即可。
如:
Response.AddHeader(“P3P”, “CP=CAO PSA OUR”);
if (Session[SESSIONKEY] == null)
{
//TODO:其它操作
}