代码之家  ›  专栏  ›  技术社区  ›  NotDan

如何将一个网页的结果嵌入到另一个网站的另一个网页中?

  •  2
  • NotDan  · 技术社区  · 16 年前

    我想允许用户调用我的rubyonrails应用程序作为一个服务,它返回一个带有html内容的div,并将这个div嵌入到他们的应用程序中(而不是rails应用程序)。

    我要做的是在我的站点上托管一个服务,它返回一些html内容,但实际上会将这些内容显示为另一个站点的一部分,这样最终用户就只能看到另一个站点,而永远不会真正了解我的站点。

    另外,如果这是唯一的方法,我可以在客户机上使用javascript来实现这一点,但是如果可能的话,我更希望php应用程序在服务器上处理这一点,这样客户机就可以从原始服务器上嵌入html,看起来这一切都是由生成整个页面的php脚本生成的。我还希望避免使用iframe。

    这可能吗?

    3 回复  |  直到 16 年前
        1
  •  2
  •   Russell Leggett    16 年前

    假设您需要对数据进行跨域请求,并且不能仅使用iframe,您可以尝试使用 JSONP

        2
  •  2
  •   Michael Bleigh    16 年前

    实际上,您要做的是实现一个非常有限的restfulapi。如果您是唯一应该拥有访问权限的人,那么还应该实现某种基本的安全性,比如向Rails应用程序传递一个“secret”参数来验证请求者。只需在Rails应用程序中提供如下路由(在Rails2.3.x中):

    map.connect '/php/embed', :controller => 'some_controller', :action => 'embed'
    

    class SomeController < ApplicationController
      before_filter :verify_authenticity
      def embed
        render :partial => "some_rails_partial", :layout => false
      end
    
      protected
    
      def verify_authenticity
        render(:text => 'Unauthorized', :status => 401) unless params[:secret] == 'somesecretkey'
      end
    end
    

    然后,从PHP应用程序中,您只需进行一个调用,即可在以下位置下载URL的内容: http://your.railsapp.com/php/embed?secret=somesecretkey .

        3
  •  0
  •   shingara    16 年前

    是的,这是可能的。最简单的方法是对这个嵌入部分进行局部处理。

    render :partial => 'my_embedded'