【ASP.NET编程知识】iframe跨域与session失效问题的解决办法.docx
ASP.NET跨域与Session失效问题的解决办法在ASP.NET开发中,跨域和Session失效问题是一个常见的问题,特别是在使用iframe嵌入远程应用时。今天,我们来讨论这个问题的解决办法。什么是跨域和Session失效? -----跨域是指第三方Session/Cookie,也就是在当前访问的网站中加载(嵌入)另外第三方的网站代码,例如促销广告,那么第三方网站也会在访客的计算机上添加Session/Cookie。第一方Session/Cookie指的是访客当前访问的网站给访客的浏览器设置的Session/Cookie。在ASP.NET开发中,Session是基于Cookie的,客户端在第一次与服务器建立会话时,会分配给客户端一个随机的sessionId,並存于客户端Cookie中,然后在之后的请求中,会带上这个Cookie,如果在客户端找不到这样的Cookie,那么服务器就会重新分配一个。问题描述----在开发讯息在线产品时,发现IE浏览器(v7/8)都无法登录(总是提示验证码不匹配错误),而其他浏览器无此问题(firefox、百度等)。因此可以断定这和浏览器脱不了干系。初步分析:服务器端日志中显示sessionId一直在变化,每次请求都会产生一个全新的sessionId。显然这是导致无法登录的直接唯一原因,如果解决这个问题则可正常登录。深入分析:出于隐私安全的考虑,IE会丢失Iframe中的Cookie,IE6/IE7支持的P3P(Platform for Privacy Preferences Project specification)协议默认阻止第三方无隐私安全声明的Cookie,Firefox、Chrome不存在此问题。解决办法----要解决这个问题就是要在请求时添加“P3P”协议。那么如何实现呢?在框架页面加入如下代码: ``` HttpContext.Current.Response.AddHeader("P3P","CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'"); ```这将告诉IE浏览器,服务器支持P3P协议,并允许第三方cookie。另外,在ASP.NET应用程序中,我们可以使用HttpContext.Current.Sessioninstead of Session,以避免Session失效问题。结论----在ASP.NET开发中,跨域和Session失效问题是一个常见的问题,但通过添加“P3P”协议和使用HttpContext.Current.Session,我们可以解决这个问题,从而确保应用程序的正常运行。相关知识点: *跨域和Session失效问题的定义和原因* IE浏览器的P3P协议和隐私安全机制* ASP.NET中Session的工作机制*使用HttpContext.Current.Session来避免Session失效问题*添加“P3P”协议来解决跨域和Session失效问题
17.25KB
文件大小:
评论区