2012-12-07 92 views
2

我正在使用SqlMembershipProvider和asp.net,它工作正常,直到我嘗試使用iframe或框架。SqlMembershipProvider無法使用框架或僅在Internet Explorer中使用iframe登錄

當我沒有他們登錄時,我沒有問題,但如果我從我們客戶的網站包裝我們的網站,並嘗試登錄,它只是閃爍並返回到原始網站並清除所有字段。

我可以很容易地與我們的網站在IE 8和9上覆制這個,但我沒有與Firefox或鉻的問題。

是否有另一種方法來完成這個或繞過它?

======編輯======

我們的客戶從他們的網站致電我們的「門戶」,並希望我們的門戶無縫集成到它,彷彿它是一部分他們的網站。

我們認爲我們可以用一個iframe包裝我們的網站從他們的網站完成這個,但我沒有任何運氣與它的登錄工作,從我讀過它是一個跨域cookie問題(?)。

希望這有助於澄清一些事情的......

+0

這是一個跨域問題。您必須在iframe內設置網站的標題才能接受跨域調用。傳遞給iframe的cookie有同樣的問題。如果我有時間的話,如果其他人還沒有回答這個問題,我會在後面查找代碼。 – Silvermind

+0

如果你喜歡,我會愛你:) – ErocM

+3

我有一個'自定義'Controller'並且它的重寫'Initialize'我有這個'Response.AddHeader(「P3P」,「CP = \」IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT \「」);'base.Initialize(requestContext);'因爲它會初始化'Response'看它是否有效。我不能將它作爲真正的答案發布,因爲我沒有自己弄清楚,因此不知道發生了什麼。我可能會再看一次;) – Silvermind

回答

7

您可以使用FormsAuthentication.SetAuthCookie,並通過在加密方式的URL的初始憑證,

這個問題將很大程度上幫助你在互聯網瀏覽器中,其他的人也可以,

Cookie blocked/not saved in IFRAME in Internet Explorer

我已經測試過Chrome,Firefox,Opera(會第一次給出警告),它工作完美,沒問題,但是用IE,你需要看看我提供的問題。

+0

我應該得到賞金! –

+1

你這樣做!感謝您的一個很好的解釋! – ErocM

+0

Thanx男人,我希望你能在短時間內再次獲得他們:) –

6

Internet Explorer won't send cookies through IFRAMES除非你指定一個P3P header

這樣做的最簡單的方法,是表示你的web.config的自定義HTTP標頭:

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="P3P" value='CP="CAO PSA OUR"'/> 

這樣你就不必亂用這個東西你的代碼。

這個HTTP頭被稱爲Compact P3P,它應該做的伎倆,因爲我一直處於和你以前相同的情況。

恐怕也許Safari瀏覽器有點棘手,因爲除非用戶與IFRAME內容交互,否則Safari不會發送cookie,如下所示:Iframe, cross-domain cookies, p3p policy, and safari with error: A required anti-forgery token was not supplied or was invalid。你的情況可能不是什麼大問題。

乾杯。

+0

沒有在ie9上工作! –

+0

試試這個:http://stackoverflow.com/questions/6283720/p3p-and-php-session-problem-with-iframes-in-internet-explorer-9 – vtortola

0

如果是在DNS中安裝子域名並將主機頭添加到IIS的選項,則可以嘗試通過將子域設置爲指向您的站點來規避跨域安全性。

[top] example.com @ customerIP => [iframe] portal.example.com @ yourIP 

確保域將這個標籤中的JavaScript代碼共享:

document.domain = "example.com" 
相關問題