繁体   English   中英

iframe或JS将Rails嵌入第三方网站?

[英]iframe or JS to embed Rails in 3rd party sites?

我想为Rails应用程序创建可嵌入的小部件,该控件允许用户从外部网站与该应用程序进行交互。

我准备尝试使用iframe来实现这一目标。 但是后来我发现在论坛上有一些回应,似乎暗示iframe不是实现这一目标的最佳方法,而是使用JS嵌入HTML元素。 这让我感到惊讶-我认为iframe会因为CSS和脚本的隔离而成为赢家。

因此,在第三方网站中嵌入(受限)应用程序功能的最佳方法是什么。 这种交互将仅限于登录和一个简单的表单。 JS的iframe是否嵌入了最佳方法? 作为附带的问题,两种方法都需要注意安全问题吗?

我认为使用iframe很难。 这不是整个网站的感觉,就像另一个网站内部的感觉一样,大多数是样式不匹配,或者您有滚动条或响应式布局未正确应用。 所以这是一些优点/缺点列表:

iframe PRO:

  • 请求不是跨站点起源的(很可能更安全)
  • “沙盒” javascript(无冲突)

iframe CON:

  • 风格指南
  • 历史记录不变(例如,如果您使用GET提交表单,则无法粘贴URL并将其发送给朋友)

js专业版:

  • 完全控制导航(您可以使用$.load等替代链接点击)。
  • 更改浏览器历史记录的能力(历史记录API,请参阅MDN)
  • 顺利处理html组件
  • 样式是自动继承的

JS CON:

我写了一个小小的rails插件,它允许您将rails应用程序作为js框架嵌入到另一个框架中(它仍然是真正的beta版): https : //github.com/Elektron1c97/better_frame 该插件处理大多数js问题,例如链接/表单事件并写入浏览器历史记录。

所以..如果您需要运行一个应用程序,而该应用程序应真正嵌入到另一个网站上的商店等网站中,则可以使用js嵌入。

如果您创建一个自定义项目以像soundcloud播放器一样共享, 可能要使用iframe。

如果您希望第三方网站对与小部件的交互做出反应,那么您绝对应该使用javascript。 尽管可以通过iframe在不同域之间传递消息,但使用起来并不是最方便。 参见https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

至于使用javascript,您可以简单地要求您的用户嵌入一个将渲染您的小部件的javascript文件。 要绕过任何CORS问题,您的小部件应与支持JSONP响应的API进行交互。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM