close

最近在弄系統間接。

簡單的說,別家的系統希望能透過Frame的方式,

用http連線開啟我們家系統的某頁,如下圖

2010-1-6 上午 11-02-36.png

想當然耳就有代登入這回事。

很單純的網址上接一些DES過的參數,我們這邊再解析。


開發期間當然也沒什麼特別的問題

但是開發完成後上線就突然發生異常


以下是發生事情的順序

1.對方表示連線過來會出現登入失敗的錯誤訊息
2.因為不知道登入失敗的原因是什麼,所以我加強了錯誤訊息的提示方式,表示真正錯誤原因。
3.看見的錯誤訊息是未指定任何參數
4.確定對方有指定參數,且用iframe開啟我們家的系統
5.發現cookie寫入失敗造成一直導到web.config設定的loginurl

後來我發現,原來關鍵就是iframe與cookie寫入失敗造成的。

ASP.NET如果透過Forms的機制認證使用者,

使用者資訊是寫入cookie中的

但網域不同情況下,在Frame中cookie不能存取的
(Session也會因此失敗)

所以在上線後才發生這個問題,內網開發期間很容易忽略這個問題

解決方案也不算難

在該站台下自定Header就可以解決這個問題,參考下圖
Header Name:P3P
Header Value:CP="CAO PSA OUR"

2010-1-6 上午 10-59-29.png

系統總算順利上線。這件事情讓我搞了一天多才解決Orz,我果然還是很嫩啊!!!

更詳細的說明可以參考http://support.microsoft.com/kb/323752/zh-tw

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 gogo1119 的頭像
    gogo1119

    克里斯小圭的碎碎念

    gogo1119 發表在 痞客邦 留言(0) 人氣()