2011-09-27 72 views
1

我有一個應用程序不包含會話超時,我們不希望我們的用戶每次來到該網站時都必須登錄,或者即使它們保持空閒狀態。我們最近與外部供應商合作提供了一些我們在i幀中呈現的研究數據。供應商在iframe過期後會有30分鐘的會話,要求用戶重新登錄到供應商站點。正如我之前所說的,我們不想讓最終用戶多次登錄。IFrame和父框架會話處理

我想出了是當最終用戶會話在iframe過期會有一個javascript調用的解決方案:

/if called from an iframe, refresh the containing window 

if (self != top) { 

    window.parent.location.href = window.parent.location.href; 

} 

我測試了這個地方和它的工作原理,即家長和IFRAME都在同一個應用程序服務器上運行,但是當它部署在兩個不同的域(父窗口和i-frame在不同的應用程序服務器上運行)時,它仍然將用戶發送到供應商的登錄屏幕,如果我只是按刷新我已成功重新登錄,無需提供憑據。

幾個問題:

  1. 是否有不同的方式任何人能想到的來處理這個問題呢?
  2. 任何想法爲什麼這將在本地工作,但不跨域?

回答

0

我認爲你需要從IFRAME內容更改父窗口的URL

父窗口的內容:

<b>iframe starts here</b><br><br> 
<iframe src='iframe1.html'></iframe> 

<br><br> 
<b>iframe ends here</b> 

<script type="text/javascript"> 
    function change_parent_url(url) 
    { 
    document.location=url; 
    }  
</script> 

iframe的內容:

IFRAME content<br><br> 

<a href="javascript:parent.change_parent_url('http://yahoo.com');"> 
Click here to change parent URL </a>