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 失效问题























- 粉丝: 1w+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 中国移动通信集团营业厅日常管理规定.doc
- 中建三局项目管理标准化手册.doc
- 01 Tailwindcss 第一个程序
- 3月计算机等级考试三级网络真题及参考答案.doc
- 3月全国计算机等级考试三级笔试试卷.doc
- 9月计算机等考四级数据库工程师笔试真题及答案.doc
- 5月软件设计师上午试卷.doc
- Autodesk公司CAD工程师认证考试题库.doc
- Adobe认证PhotoshopCS4考试题库.doc
- C语言练习题库及答案.doc
- excel知识练习题初级题库.doc
- S7300PLC题库.doc
- vb题库.doc
- 低碳环保网络知识竞赛试题.doc
- 广西区高校资助政策网络知识竞赛答案部分.docx
- 公共关系学网络终考题库.doc


