天天看點

accept-charset與Header P3P

場景一:

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:其它操作

}

繼續閱讀