国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

關于Iframe如何跨域訪問Cookie和Session的解決方法

2024-05-04 23:08:11
字體:
來源:轉載
供稿:網友

最近做登錄系統的整合,其中遇到的一個最關鍵的問題為在一個統一的后臺里需要無障礙的訪問另外一個系統后臺,這個系統是第三方提供的一個加過密的系統,后臺自動登錄接口是自己分析出來的,沒有單獨提供,當從統一后臺通過自動登錄接口登錄時,系統直接跳轉到系統后臺首頁,后臺登錄成功后所跳轉的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也就失效了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清涧县| 科技| 兴山县| 尤溪县| 莎车县| 迁西县| 定安县| 东光县| 巴南区| 石阡县| 康马县| 城口县| 临夏县| 台南市| 同仁县| 治县。| 图们市| 昭平县| 西华县| 肃宁县| 余姚市| 榆林市| 山阳县| 濮阳县| 英吉沙县| 安福县| 永顺县| 若羌县| 威信县| 合作市| 榕江县| 马关县| 湘乡市| 阿鲁科尔沁旗| 嘉禾县| 屏边| 阜城县| 巢湖市| 冷水江市| 揭西县| 吉隆县|