`
taito
  • 浏览: 95686 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

iframe中session失效问题,rails应用与iis的解决方案

阅读更多

在iframe 嵌入跨域网站时,session丢失问题其根源也是由于iframe跨站点cookie被阻导致session失效。如果两个站点都是相同的父域名就没有这个问题。

 

问题原因:

 

IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。Mircosoft对此的具体描述可以参见 Privacy in Internet Explorer 6

 

解决方法:

 

A、Rails

 

 

before_filter :send_header
def send_header
  response.headers['P3P'] = 'CP="CAO PSA OUR"'
end
 
B、IIS

 

 

 

1.打开IIS管理器 inetmgr
2.选择被嵌入iframe源站点或者目录,右键点击打开属性框
3.切换到HTTP头
4.添加
5.自定义HTTP头名: P3P
6.自定义HTTP头值: CP=”CAO PSA OUR”
7.关闭属性框退出,即刻生效

 

 

至于上面CAO PSA OUR的具体意思,请参考文章:Privacy in Internet Explorer 6

 

Rails and IFrames - Issues with Internet Explorer sessions
While using our new Share-It iframe for a project we came across a strange session issue with internet explorer that was tough to track down a solution to.  

Basically we were loading an iframe with some parameters that were saved in a session, this worked fine on all browsers except for internet explorer.  

Every request had a new session id, so the issue had to be with the cookies.  As it turns out using an iframe from a different domain name is considered "third-party" and IE blocks the cookies unless....

You set this ( P3P compact policy ) response header.

P3P: CP="CAO PSA OUR"more details about the header and what it means can be found here.

you can easily do this in a controller using this call in a before filter with this line:

response.headers['P3P'] = 'CP="CAO PSA OUR"

Since the issue was harder to find a solution to than it should have been we decided it would make a good first development post from the Sympact team. Expect More...

 

分享到:
评论

相关推荐

    提升Ruby on Rails性能的几个解决方案

    简介 Ruby On Rails 框架自它提出之日...Rails 是一个真正彻底的 MVC(Model-View-Controller) 框架,Rails 清楚地将你的模型的代码与你的控制器的应用逻辑从 View 代码中分离出来。Rails 开发人员很少或者可能从未遇到

    使用Aptana+Rails开发Rails Web应用(中文)

    本教程将详细介绍如何使用Aptana与Rails结合,创建一个功能完备的Web应用程序。 首先,我们需要安装Aptana Studio。你可以从其官方网站下载最新版本的安装包。安装过程中,遵循提示进行,确保选择自定义安装并勾选...

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...

    rails飞信 gem plugin api 插件的问题解决方案

    标题中的“rails飞信 gem plugin api 插件的问题解决方案”涉及到的是在Ruby on Rails框架下,使用特定的gem(一种Ruby的库或插件)来集成飞信API时遇到的问题及解决方法。飞信是中国移动推出的一种即时通讯服务,...

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板.zip

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...

    rails和mysql数据库连接中出现的问题以及解决办法

    通常,较新的Rails版本支持较新的MySQL版本,但旧版本的Rails可能需要降级MySQL或升级Rails以解决问题。 总结来说,解决Rails与MySQL连接问题涉及检查配置文件、安装和更新依赖、确保系统库完整、确认服务状态和...

    Ruby-Devise一个基于Warden的Rails灵活身份验证解决方案

    Ruby-Devise是Ruby on Rails框架中的一个强大且灵活的身份验证解决方案,它为开发者提供了处理用户注册、登录、密码重置等常见...同时,Devise社区活跃,拥有丰富的文档和示例,使得开发者能够轻松获取帮助和解决问题。

    应用Rails进行敏捷Web开发中文第三版

    《应用Rails进行敏捷Web开发》中文第三版是针对Ruby on Rails框架的一本详尽指南,主要聚焦于...尽管Rails已经发展到更高级的版本,但了解早期版本的知识有助于理解框架的发展历程,对解决遗留系统的问题也会有所帮助。

    Ruby+on+Rails快速Web应用开发实战.pdf

    - **字符编码问题**:文档中出现了“Latin1StandardCharacterS”,这可能指的是Rails在处理不同字符编码时的配置选项。 总结以上内容,Ruby on Rails快速Web应用开发实战的文档详细介绍了Ruby编程语言和Rails框架的...

    rails应用--导航栏实例工程

    在本项目"rails应用--导航栏实例工程"中,我们将探讨如何在Ruby on Rails框架下构建一个实用的导航栏。Rails是一个流行的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使得开发过程更加高效且结构...

    Ruby-RailsErd为Rails应用程序生成实体关系图

    对于数据可视化,Rails Erd提供了一个很好的解决方案,特别是在复杂的应用程序中,清晰的ERD可以帮助团队成员更好地协作,避免因为数据库设计的不清晰导致的错误。同时,它也方便非开发人员理解系统的数据模型,比如...

    activerecord-session_store, 从 Rails 中提取的记录存储的活动会话.zip

    activerecord-session_store, 从 Rails 中提取的记录存储的活动会话 Active Record 会话存储由 Active Record 类支持的会话存储。 提供了默认类,但是任何对 Active Record 会话类的对象鸭类型都有文本 session_id ...

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成.zip

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成 不再维护webpack-rails 不再被维护。 有关详细信息,请参阅 #90. web pack-railsweb pack 为你提供了将 web pack集成到现有的Ruby on Rails 应用程序中...

    Rails的中文乱码问题

    标题中的“Rails的中文乱码问题”涉及到的是在使用Ruby on Rails框架开发Web应用时,遇到的中文字符编码不正确的问题。Rails是一个基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构模式。在...

    Ruby-这是一个在Rails应用程序中使用React并使用webpack的示例

    在Rails应用中引入React,通常需要借助于`react-rails` gem,它提供了一种便捷的方式将React与Rails结合。安装`react-rails`可以通过在Gemfile中添加以下行: ```ruby gem 'react-rails' ``` 然后运行`bundle ...

    从 Assets Pipeline 到 Webpack,Rails 6 的新前端方案们 - 过纯中1

    然而,随着前端开发技术的迅速发展,Webpack逐渐成为现代JavaScript应用的标准构建工具,因此在Rails 6中,开发者开始转向使用Webpack作为新的前端解决方案。 Assets Pipeline的主要功能包括资源的concatenation...

    在Rails中使用SSL

    在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1...

    Rails应用程序样本AWSOpsWorksRailsDemoApp.zip

    AWS OpsWorks Rails Demo App 是一个示例应用程序,旨在帮助开发者了解如何在AWS OpsWorks环境中部署和管理Rails应用。这个应用可能包含了常见的功能,如用户注册、登录、数据展示和交互,以展示Rails和OpsWorks结合...

    Ruby-GoOnRails使用Rails生成器来生成一个Golang应用

    `GoOnRails`是专门为Rails开发者设计的一个生成器,它允许在Rails应用中集成Go代码,创建Go API服务。这个工具简化了在Rails项目中使用Go进行后端处理的流程,使开发者可以利用Go的性能优势处理高并发请求,同时保留...

    Ruby-GoogleSignInforRails实现将Google登录集成到您的Rails应用中

    Google Sign-In for Rails 实现将Google登录集成到您的Rails应用中

Global site tag (gtag.js) - Google Analytics