Heim php教程 php手册 IE下PHP iframe跨域导致session丢失问题的解决方法

IE下PHP iframe跨域导致session丢失问题的解决方法

Jun 13, 2016 am 09:41 AM
iframe php入门 session 导致

一个登录页面,被别的网站用iframe嵌进去后,死活无法登录(只在IE中存在这种情况)。主要是session无法被保存的问题,下面把个人的解决过程分享个大家 今天搞的一个登录页面,被别的网站用iframe嵌进去后,死活无法登录(只在IE中存在这种情况)。 

很明显,session无法被保存。但是直接在地址栏打开那个登录页面,一切都正常啊。真是奇怪啊。 

在网上搜索了一下。发现这个问题还真有不少人提及到。最后的解决方法是在那个登录页面里加上以下代码: 
代码如下:

header('P3P: CP="ALL ADM DEV PSAi COM OUR OTRo STP IND ONL"'); 
session_start();
Nach dem Login kopieren

 
可能这个问题跟我的登录页面是采用javascript的location跳转也有关。但没有深入测试研究。 

拓展阅读: 
今天在处理腾讯朋友应用的时候,测试给我发来个工单,说应用在IE7 上无法使用.出现登陆超时错误. 

第一反应是session丢失了. 

于是上网找了下 IE7 iframe session丢失问题.后来找到如下文章,问题解决: 

昨天,我在校内上做的时间日记终于上线了。上线第一天有80多个用户安装,但却以外收到不少用户的反馈说应用不可用。我之前都是在firefox上开发的(估计校内工作人员也是用firefox审核的),在使用IE7测试时,却发现首页之外的页面全都无法正常打开。 

在网上查找了许多资料,发现在IE7中存在这样的问题:如果页面中存在着一个或多个iframe的子页面,那么在子页面中创建session可能无 法成功,这样session数据就无法和其他页面所共享。在开发校内、51应用时,假设采用iframe方式,很可能会遇到这样的问题。而且这个问题只存 在于IE7浏览器中,我在firefox, IE6和chrome等浏览器中测试均没有问题。 

解决方案是:在运行session_start之前,在程序中加上如下一句(以php语言为例),大致是向浏览器声明一下安全级别,这样iframe子页面在创建session时就不会有问题了: 

header('P3P: CP=”ALL ADM DEV PSAi COM OUR OTRo STP IND ONL”‘); 

另外,我还了解到:如果二级域名中包含了下划线,如:your_domain.yourhost.com,在建立和传递session时也可能会出现问题。 

一点感想: 

1)时隔多年,浏览器兼容性问题仍然没有得到彻底解决,IE浏览器仍然是那么让开发者感到痛苦和折磨。 
2)发布应用前,一定要经过严密的浏览器兼容性测试,否则就有可能损失应用的第一批用户。 

其他参考文章: 

解决iframe中jsessionid无法传递导致session丢失的问题 
http://618119.com/archives/2007/12/19/48.html 

在实现 ISMP2.1.1 接口的适合需要用到sso,而ISMP里定义的接口是需要在iframe等嵌入页面中调用sso接口,在实际开发中发现session无法正常传递。 

重现问题的场景是: 

1.先访问a站点:http://192.168.18.2/test.jsp 

test.jsp的代码为: 
 

 
session--www.jbxue.com 
 
 
 
 
 
sso .jsp里读取传递的ssoinfo,反向调用ISMP认证接口, 

生成session,然后放入指定的属性值, session .setAttribute(“ssoUser”,”lizongbo”); 页面再重定向到 http://192.168.18.3/iframe.jsp 

response.sendRedirect(“/iframe.jsp”); 

iframe.jsp中读取session中ssoUser的属性值,会发现无法读取。 
2.如果先访问了 192.168.18.3的页面,再访问192.168.18.2的页面,此时的iframe嵌入是可以传递已生成好的jsessionid Cookie. 

因此解决的办法有: 

a.在url中加上jsessionid. 

例如重定向到 response.sendRedirect(“/iframe.jsp;jsessionid =lizongbo”); 
而这种情况下,如果iframe.jsp页面内的其它连接的url没有加上jsessionid, 

也无法继续传递session,不过通过在客户端的js来为每个超连接的href属性重写加上jsessionid. 

b.sso.jsp里设置P3P头信息 
例如 P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR” 
或 P3P:CP=”CAO PSA OUR” 
java代码为: 
response.addHeader(“P3P”,”/”CAO PSA OUR/”");
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie schneide ich einen IFrame in HTML zu? Wie schneide ich einen IFrame in HTML zu? Aug 29, 2023 pm 04:33 PM

Inline-Frames werden in HTML als Iframes bezeichnet. Eine Beschriftung gibt einen rechteckigen Bereich innerhalb des Inhalts an, in dem der Browser verschiedene Dokumente mit Bildlaufleisten und Rändern anzeigen kann. Um ein anderes Dokument in das aktuelle HTML-Dokument einzubetten, verwenden Sie Inline-Frames. Mit dem HTMLiframe-Namensattribut kann ein Verweis auf ein Element angegeben werden. In JavaScript werden Verweise auf Elemente auch über das Namensattribut hergestellt. Ein Iframe wird im Wesentlichen verwendet, um eine Webseite innerhalb der aktuell angezeigten Webseite anzuzeigen. Die URL des Dokuments, das den Iframe enthält, wird über das Attribut „src“ angegeben. Syntax Das Folgende ist die Syntax von HTML <iframesrc="URL"title="d

Warum wird der Iframe langsam geladen? Warum wird der Iframe langsam geladen? Aug 24, 2023 pm 05:51 PM

Die Gründe für das langsame Laden von Iframes sind hauptsächlich Netzwerkverzögerung, lange Ressourcenladezeit, Ladereihenfolge, Caching-Mechanismus und Sicherheitsrichtlinien. Detaillierte Einführung: 1. Netzwerkverzögerung. Wenn der Browser eine Webseite mit einem Iframe lädt, muss er eine Anfrage an den Server senden, um den Inhalt im Iframe abzurufen 2. Wenn die Ladezeit der Ressource lang ist oder die Antwortzeit des Servers lang ist, ist die Ladegeschwindigkeit offensichtlich langsamer. usw.

Was bedeutet Daten-ID im Iframe? Was bedeutet Daten-ID im Iframe? Aug 28, 2023 pm 02:25 PM

Die Daten-ID in einem Iframe bezieht sich auf ein benutzerdefiniertes Attribut, das in HTML-Tags zum Speichern der Kennung eines bestimmten Elements verwendet wird. Mithilfe des data-id-Attributs können Sie dem iframe-Element eine eindeutige Kennung hinzufügen, sodass es in JavaScript bearbeitet und abgerufen werden kann. Die Benennung des data-id-Attributs kann entsprechend den spezifischen Anforderungen angepasst werden, es werden jedoch normalerweise einige Namenskonventionen befolgt, um seine Einzigartigkeit und Lesbarkeit sicherzustellen. Das data-id-Attribut kann auch verwendet werden, um einen bestimmten Iframe zu identifizieren und zu bearbeiten.

So beheben Sie Sitzungsfehler So beheben Sie Sitzungsfehler Oct 18, 2023 pm 05:19 PM

Ein Sitzungsfehler wird normalerweise durch den Ablauf der Sitzungslebensdauer oder das Herunterfahren des Servers verursacht. Die Lösungen: 1. Verlängern Sie die Lebensdauer der Sitzung. 3. Verwenden Sie Cookies. 4. Aktualisieren Sie die Sitzung.

Lösung für das domänenübergreifende Problem der PHP-Sitzung Lösung für das domänenübergreifende Problem der PHP-Sitzung Oct 12, 2023 pm 03:00 PM

Lösung des domänenübergreifenden Problems von PHPSession Bei der Entwicklung der Front-End- und Back-End-Trennung sind domänenübergreifende Anforderungen zur Norm geworden. Wenn es um domänenübergreifende Probleme geht, nutzen wir in der Regel Sitzungen und verwalten diese. Aufgrund von Richtlinieneinschränkungen für den Browserursprung können Sitzungen jedoch standardmäßig nicht über Domänen hinweg gemeinsam genutzt werden. Um dieses Problem zu lösen, müssen wir einige Techniken und Methoden verwenden, um eine domänenübergreifende gemeinsame Nutzung von Sitzungen zu erreichen. 1. Die häufigste Verwendung von Cookies zum domänenübergreifenden Teilen von Sitzungen

Was sind die Ladeereignisse von iframe? Was sind die Ladeereignisse von iframe? Aug 28, 2023 pm 01:55 PM

Zu den Ladeereignissen von iframe gehören das Ereignis onload, das Ereignis onreadystatechange, das Ereignis onbeforeunload, das Ereignis onerror, das Ereignis onabort usw. Detaillierte Beschreibung: 1. onload-Ereignis, das den JavaScript-Code angibt, der nach dem Laden des Iframes ausgeführt werden soll. 2. onreadystatechange-Ereignis, das den JavaScript-Code angibt, der ausgeführt werden soll, wenn sich der Iframe-Status ändert usw.

Was bedeutet iframe in Python? Was bedeutet iframe in Python? Aug 25, 2023 pm 03:24 PM

iframe in Python ist ein HTML-Tag, das zum Einbetten einer anderen Webseite oder eines anderen Dokuments in eine Webseite verwendet wird. In Python können Sie verschiedene Bibliotheken und Frameworks zum Verarbeiten und Bearbeiten von Iframes verwenden. Die am häufigsten verwendete davon ist die BeautifulSoup-Bibliothek, mit der Sie den Inhalt eines Iframes problemlos aus einer Webseite extrahieren und bearbeiten und verarbeiten können. Zu wissen, wie man mit Iframes umgeht und sie manipuliert, ist sowohl für die Webentwicklung als auch für das Daten-Scraping äußerst nützlich.

Was ist die Gefahr in Iframes? Was ist die Gefahr in Iframes? Sep 08, 2023 pm 03:14 PM

Zu den Gefahren in Iframes zählen vor allem: 1. Schädliche Webseiten können andere Webseiten über Iframes laden und einige Angriffe ausführen. Durch das Laden von Webseiten unter anderen Domänennamen in Iframes Richtlinie kann verletzt werden, um eine domänenübergreifende Kommunikation zu erreichen, die böswillig angegriffen werden kann. In Iframes geladene Webseiten können JS-Code ausführen, was zu Sicherheitsproblemen führen kann Über Iframe usw. geladene Inhalte können nicht korrekt analysiert und indiziert werden.

See all articles