代理一个网站能够在iframe中进行所见即所得编辑-它是如何工作的
Proxying a site to be able to WYSIWYG edit in iframe - How does it work?
上下文
我希望创建一个所见即所得编辑器,允许用户编辑iframe中加载的第三方网站。我知道像Optimizely这样的公司使用代理来实现这一点(如本文所述),但我不太明白这是如何工作的。特别是,这部分有点不清楚:
Optimizely Editor加载http://www.mypage.com在iframe中,并使用window.postMessage与页面通信。只有当该页面上已经有类似上面的片段时,这才有效。如果不是这样,编辑器将在等待来自iframe'd页面的消息时超时,并将通过实际将片段插入页面的代理再次加载。
问题
代理究竟做了什么,允许JS片段插入到页面中,并允许用户编辑iframe中加载的不可编辑的内容?
给定:
- 爱丽丝,她有浏览器
- Bob,他经营着一个提供编辑服务的网站
- Carol,她经营着一个Alice想要编辑的网站
如果:
- 鲍勃给爱丽丝发了一个页面,里面有一个iframe
- iframe告诉Alice的浏览器从Carol的网站加载页面
然后,同源策略阻止Bob的客户端代码访问Carol的网站。
然而,当您使用代理时:
- 鲍勃给爱丽丝发了一个页面,里面有一个iframe
- iframe告诉Alice的浏览器从Bob的站点加载页面
- Bob的网站通过以下方式响应页面请求:
- 从Carol的网站获取页面
- 修改它
- 从Alice的浏览器发送修改后的HTML作为对请求的响应
现在iframe:
- 与Bob页面的其他部分位于同一原点,因此同一原点策略不适用或
- 代理所做的修改(在步骤3.2中)允许通过postMessage进行跨源通信
相关文章:
- 代理一个网站能够在iframe中进行所见即所得编辑-它是如何工作的
- 使用PageMod将所有文本框转换为所见即所得HTML编辑器
- JavaScript:将所见即所得编辑器对实时站点的更改转换为jQuery操作
- 所见即所得编辑器适用于速度模板
- 输入法所见即所得编辑器不在mysql数据库中存储值
- 如何使用我自己的所见即所得编辑器插入图像
- 所见即所得内容中的撤消和重做SWT中的可编辑内容;不起作用
- 如何在execCommand所见即所得编辑器中查找选定的文本字体大小和名称
- 使用MathJax的数学方程所见即所得编辑器
- Javascript:在所见即所得编辑器中的插入符号处粘贴文本
- 使用 strip_tags() 和 preg_replace() 显示所见即所得/TinyMCE 文本编辑器中输入的文本
- 所见即所得的 XML 编辑器 Web 应用程序
- 更改所见即所得编辑器上的字体大小选项
- 像所见即所得的概念一样编辑一个html页面
- 如何取消粗体文本?一个小小的所见即所得的编辑器
- 使用 Javascript 或所见即所得打开和编辑 html 页面的片段
- 使用 JavaScript 更改 JQuery 所见即所得编辑器的内容
- 所见即所得视图绑定到 Ace 编辑器
- 所见即所得的编辑器按钮
- 在所见即所得编辑器中编辑,,等