【发布时间】:2015-03-31 05:56:42
【问题描述】:
我们最近完成了为客户创建的电子学习课程,并计划很快将其部署到生产环境中。 他们有自己的网络服务器和自己的域,但希望我们在我们的服务器上运行的 Rails 驱动的 LMS 上托管课程。
课程很长,需要注册才能随时暂停和继续。
现在,他们还希望用户访问他们的域 foo.com,浏览并启动课程。然后,课程启动器页面将我们的页面嵌入到 iframe 中,来自 app.bar.com。
这当然会导致会话出现一些问题,因为第三方 cookie 等等。我调查并发现了大量不同的黑客和解决方案,但到目前为止都没有奏效。
据我所知,
P3P-header 已不再真正使用,但我添加了一个虚拟头,类似于 Facebook 和 Google。 (P3P: CP="This site does not have a p3p policy.")我还研究了
CORS,Access-Control-Allow-Credentials: true听起来很有希望,但什么也没做。我可能配置错误,但想知道在投入太多时间之前是否有可能。一些网站提到,如果浏览器之前与
app.bar.com通信,它可以工作,所以我尝试在 iframe 之前从app.bar.com加载图像,但这还不够,或者还有另一个 hack后来修好了。
我了解阻止第三方 Cookie 通常对于阻止跟踪用户是件好事。打算参加该课程的人来自世界各地,因此无法解释如何为每个人禁用第三方 cookie 拦截。
我考虑的另一件事是从客户端获取一个指向我们服务器的子域,course.foo.com 或类似的东西,并且从那里请求数据的 iframe 可以工作。在尝试通过该请求之前,我想知道它是否会起作用。
域之间不需要任何类型的通信,正如大多数其他 JavaScript 解决方案似乎假设的那样,除了确保设置 cookie 并将其发送到我们的 LMS。
我可以完全控制我们的服务器,并且可以根据需要更改其中的大部分内容。对于客户端服务器,我只能有限地访问 HTML。
编辑:刚刚注意到至少在 IE9 中,它与 P3P-header 配合得很好。
【问题讨论】:
-
我有类似的问题。如果我能够在没有 cookie 的情况下捕获 POST 并共享链接以直接在我的网站上的窗口中显示表单,那么这对我有用... (stackoverflow.com/questions/29311728/…)
标签: ruby-on-rails iframe cookies