close
最近在弄系統間接。
簡單的說,別家的系統希望能透過Frame的方式,
用http連線開啟我們家系統的某頁,如下圖
想當然耳就有代登入這回事。
很單純的網址上接一些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"
系統總算順利上線。這件事情讓我搞了一天多才解決Orz,我果然還是很嫩啊!!!
更詳細的說明可以參考http://support.microsoft.com/kb/323752/zh-tw
全站熱搜