關於Iframe如何跨域訪問Cookie和Session的解決方案_PHP教程

來源:互聯網
上載者:User
最近做登入系統的整合,其中遇到的一個最關鍵的問題為在一個統一的後台裡需要無障礙的訪問另外一個系統後台,這個系統是第三方提供的一個加過密的系統,後台自動登入介面是自己分析出來的,沒有單獨提供,當從統一後台通過自動登入介面登入時,系統直接跳轉到系統後台首頁,後台登入成功後所跳轉的URL這裡沒法指定,控制不了跳轉的頁面,如果在統一後台裡需要連結到這個系統背景另外一個頁面,而非後台預設首頁時,也就是將第三方系統背景菜單功能放到我們這個統一後台裡。

對於這樣的一個需要,這裡會遇到一個問題,為了能正常訪問第三方系統的後台欄目,必需確保已經登入該系統,否則會提示使用者登入,所以在點擊這些菜單連結時,系統必需已經登入。

為瞭解決這個問題,在頁面頭部添加了一個不可見的iframe,使其指向到自動登入介面,這個介面如果正常通過瀏覽器地址欄訪問,當使用者名稱和密碼驗證無誤時,會跳轉到系統後台首頁,由於此時放在了一個不可見的IFRAME中,所以跳轉對當前後台頁面沒有任何影響。按照我的設計方法,系統應該就可以正常使用了。

但,既然說到但了,就說明肯定遇到了問題,不然這裡不會來這麼大的一個轉折的。

但由於這裡各系統均屬於不同的系統,網域名稱不一樣,所以出現了Iframe在IE中,不能正常產生第三方系統Cookie的情況,但在Firefox和其它瀏覽器中均可產生,所以用IE訪問時,總是跳轉到登入頁面。

這裡需要說明一下,這裡的第三方系統放在我們自己的伺服器上的,只是所有源碼加了密!

最後查閱了相關資料後,發現在IE中,為了安全,阻止了通過IFRAME產生第三方域的COOKIE,為瞭解決這個問題,MS規定只要在HTTP的HEADER頭中,設定P3P這個頭,就可以通過IFRAME來產生第三方COOKIE了。

PHP中,P3P HEADER 頭的設定方法如下:

header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);

注意:這裡的P3P需要添加到第三方域產生Cookie的那個檔案才生效,否則無濟於事。

這裡又有問題了,第三方系統產生COOKIE在背景一個叫admin.php的頁面裡產生的,而這個頁面又是加過密的,這可怎麼辦了,想了很久,最後同事靈機一動,說我們可以用我們自己的檔案來包含它。靠,這方法太妙了,為什麼我就沒有想到了,同事真是太有才了,真是佩服的五體投地,當然,我對他這麼一佩服,據他說自己當晚也自己佩服了自己一晚上。

所以最後的解決方案為將原來的admin.php檔案命名為admin_2.php,然後建立admin.php,最後在這個檔案中,添加上面所的P3P這個HEADER頭,並再次包含 admin_2.php這個檔案,最終代碼如下:

header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);
include “admin_2.php”;

最後,問題徹底解決!

這裡標題是COOKIE和SESSION的問題,實質上,基本上是一回事,SEESION最終的儲存也是通過SESSION_ID儲存到COOKIE源碼天空,然後通過這個SID到伺服器上找相應的SEESION資料,只要把COOKIE裡的SEESION_ID這個COOKIE給刪掉,SESSION也就失效了。

http://www.bkjia.com/PHPjc/326846.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/326846.htmlTechArticle最近做登入系統的整合,其中遇到的一個最關鍵的問題為在一個統一的後台裡需要無障礙的訪問另外一個系統後台,這個系統是第三方提供...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.