以前做过一个系统,需要在系统(A)中集成目前现存系统(B)的功能。
因为系统B做了权限控制,所以在系统A的数据库建立跟系统B一样的权限表,然后登录系统A后,将用户信息、权限信息等存放进session中,然后在系统B进行权限验证。
理论上这种设计在不使用框架结构时,完全是可行的。但是如果,系统A使用了框架结构,即系统(B)中的功能页面要嵌入到系统(A)的框架中时,系统B取不到session值了,既session丢失了。
原来是因为应用需求在一个页面的不同frame下面访问不同的域,结果造成了session丢失。
问题根源:
IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。Mircosoft对此的具体描述可以参见 Privacy in Internet Explorer 6
解决办法是在要嵌入的内容中(iframe指向的站点)输出P3P的主机头声明:
php:
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
asp.net:
HttpContext.Current.Response.AddHeader("p3p", "CP=\""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""")
jsp:
response.setHeader("P3P","CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'")
ColdFusion:
<cfheader name="P3P" value="CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'" />
分享到:
相关推荐
NULL 博文链接:https://thoreau.iteye.com/blog/745100
但是,为了提供更好的用户体验,特别是在单点登录(Single Sign-On, SSO)场景下,跨域共享session变得非常重要。 **一、跨域共享session原理** 1. **JSONP(JSON with Padding)**:JSONP是一种早期的跨域解决方案...
ASP.NET 跨域与 Session 失效问题的解决办法 在 ASP.NET 开发中,跨域和 Session 失效问题是一个常见的问题,特别是在使用 iframe 嵌入远程应用时。今天,我们来讨论这个问题的解决办法。 什么是跨域和 Session ...
通过这种方式,可以解决在IE浏览器中由于P3P隐私设置导致的iframe跨域cookie丢失问题,进而解决session失效导致的用户频繁重新登录的问题。这个方法在技术上是可行的,但需要网站管理员操作,确保P3P声明符合实际的...
8. **跨域问题**:如果Web应用涉及到跨域访问,Session不会在不同的域名之间共享。解决方法包括使用JSON Web Tokens(JWT)或者将所有资源部署在同一域名下。 9. **用户手动清理Cookie**:用户主动清理浏览器Cookie...
在前后端分离的架构中,Vue.js作为前端框架与Spring Boot作为后端服务进行交互时,常常会遇到跨域和Session、Cookie失效的问题。本文将详细介绍如何解决这些问题。 首先,跨域是由于浏览器的安全策略限制,同一源...
现在Ajax在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不
总的来说,针对IE浏览器中iframe跨域导致Session丢失的问题,关键在于理解浏览器对跨域Cookie的处理方式,特别是IE的独特限制。通过设置P3P头,可以通知浏览器允许iframe内的页面使用和共享Session,从而修复登录和...
(5) **跨域问题**:Session通常只在同一个域下有效,如果用户通过链接跳转到其他域,Session会丢失。 (6) **硬件故障**:服务器内存不足或硬盘问题可能影响Session的存储。 **3. 解决方案** (1) **调整Session...
在使用Nginx作为反向代理服务器时,有时会遇到session丢失的问题,这通常是由于代理和后端服务器之间交互配置不当引起的。下面是处理和解决Nginx session丢失问题的一些知识点和方法: 1. 了解Session机制:在Web...
Session是Asp.net网站的一种重要机制,用于保持用户登录状态和验证码等信息,但是Session丢失的问题却经常出现。那么, Session 丢失的原因是什么?如何解决这个问题呢? Session的工作机制是这样的:第一次访问IIS...
因此,当用户登录后,服务器设置的session ID或其他认证信息无法通过跨域请求传递回客户端,导致用户状态丢失。 为了解决这个问题,我们可以利用XMLHttpRequest(axios底层使用的技术)的withCredentials属性。这个...
在使用Uploadify插件进行文件上传时,可能会遇到一个常见的问题,即Session丢失。Uploadify是一个基于Flash的文件上传组件,它允许用户批量上传文件,但在处理过程中可能会与服务器端的Session管理机制产生冲突,...
3. 不能跨域共享:每个域名有自己的Session,不同域间的页面无法直接共享Session数据。 4. 安全性:Session信息存储在服务器端,相对安全,但若Session ID被窃取,可能会导致安全性问题。 5. 依赖客户端:如果用户...
本文主要探讨如何解决Iframe跨域访问Cookie和Session的问题。 首先,理解跨域访问的基本概念。在Web浏览器的安全策略中,同源策略(Same-origin policy)禁止了一个源(协议+域名+端口)的文档或脚本直接获取另一个...
然而,在实际开发过程中,经常会遇到Session状态不稳定或数据丢失的问题。本文将详细介绍几种常见的C# Session丢失问题及其解决办法。 首先,Session状态丢失的原因可能有以下几种: 1. 杀毒软件扫描Web.Config...
5. **框架页面和跨域问题**:框架集(Frameset)或跨域请求可能导致Session无法正常工作。 解决策略包括: 1. **调整Session超时**:在`Web.config`中增加`timeout`属性的值,延长Session有效期。 2. **独立的应用...