我有一個表單,在網頁上有一個驗證碼,這個驗證碼正在使用(作爲所有capcha我認爲)SESSION變量來存儲值。 此表單與IE7-8和9一起使用,也與FF,Chrome,Safari等一起使用,但與IE10我遇到問題。 如果在IE10的網頁上直接調用此表單,驗證碼的運行效果很好,但如果從另一個網站的IFRAME調用此表單,則不會存儲SESSION變量。沒有辦法在這種情況下使用SESSION變量。IE10,Iframe和PHP SESSION var
有什麼想法?
我有一個表單,在網頁上有一個驗證碼,這個驗證碼正在使用(作爲所有capcha我認爲)SESSION變量來存儲值。 此表單與IE7-8和9一起使用,也與FF,Chrome,Safari等一起使用,但與IE10我遇到問題。 如果在IE10的網頁上直接調用此表單,驗證碼的運行效果很好,但如果從另一個網站的IFRAME調用此表單,則不會存儲SESSION變量。沒有辦法在這種情況下使用SESSION變量。IE10,Iframe和PHP SESSION var
有什麼想法?
內聯框架受制於其內容的始發站點。由於您正在從其他站點加載驗證碼/表單,因此在該框架中設置的任何Cookie都被鎖定到該其他站點。
例如您的網站是example.com。 iframe來自foobar.net。在iframe中設置的任何Cookie都限制爲foobar.net,並且不會提供給example.com。
我明白了,但在這種情況下,網站「foobar.net」正在顯示一個指向「example.com」的IFRAME,其中表單**和**驗證碼被託管......同一個domaine和同一個服務器......該表單由具有FF的IFRAME ,IE7-8-9,Chrome,Opera,Safari,Konkeror等...不是IE10 !!! – Mystral
首先,你是混亂的會話和餅乾。會話存儲在服務器上,客戶端上有一個cookie。如果你有一個會話,你會喜歡有一個cookie來識別你的會話。所以你真的在談論cookie。
您不允許從其他域取回cookie。它違反了同源政策。
如果您控制兩個域,則可以設置資源共享(CORS跨源資源共享),但這並不容易。
我不會混淆會話和cookies,我真的知道它是什麼我是一個web編碼器,並使複雜的網站。 它關注SESSION Cookie,名爲「PHPSESSID」(用於PHP編碼),而不是用戶cookie。這個SESSION cookie由瀏覽器發送,以在訪問期間識別同一個訪問者。通過使用此ID存儲信息,PHP可以檢索先前存儲在同一網站(相同域)的不同頁面和相同瀏覽器中的變量。 (請參閱http://www.php.net) 即使關閉導航器,也會存儲用戶Cookie,如果關閉導航器(不是選項卡...),則SESSION Cookie將丟失。 – Mystral
如果您的代碼適用於IE9及以下,而不是IE10,很可能是由於IE10的DoNotTrack設置默認打開,從而阻止以任何方式共享Cookie:http://econsultancy.com/ca / blog/10983-thanks-microsoft-do-not-track-is-effective-dead-on-arrival毫無疑問,這個設置默認打開,因爲網站現在忽略了這個設置。 – scunliffe
我試圖刪除「不要追蹤」,但有同樣的問題。事實上,直接使用表單(沒有來自其他域的Iframe),表單在IE10中運行良好。 我會嘗試這個黑客:發送一個特殊的Http標頭:P3P:CP =「IDC DSP COR ADM DEVI TAIi PSA PSD IVAi IVDi CONi HIS我們的IND CNT」 我知道 – Mystral