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

时间:2010-03-23 18:00:37

标签: php asp.net javascript ruby-on-rails

我想允许用户在rails应用程序上调用我的ruby作为服务,返回带有html内容的'div',并将该div嵌入到他们的应用程序中(这不是rails应用程序)。

例如,假设有人拥有自己的php网站,其中包含要呈现的页眉/页脚模板,以及根据我在rails应用程序中生成的某些html需要填充的页面内容区域。我想允许他们,从php,调用我的网站,获取我生成的'div',并将其作为html嵌入他们的php页面。

我正在尝试做的是在我的网站上托管一项服务,该服务返回一些html内容,但实际上将该内容显示为另一个网站的一部分,以便最终用户只能看到另一个网站并且从未真正知道我的

此外,我可以在客户端上使用javascript,如果这是唯一的方法,但我希望php应用程序在服务器上处理这个,如果可能的话,所以客户端获取从原始服务器嵌入的html和它看起来这一切都是由生成整个页面的php脚本生成的。我也想避免使用iframe。

这可能吗?

3 个答案:

答案 0 :(得分:2)

假设您需要对数据进行跨域请求,并且不能只使用iframe,您可以尝试使用JSONP来获取JS中包含的html。

答案 1 :(得分:2)

您实际上要做的是实现一个非常有限的RESTful API。如果您是唯一应该具有访问权限的人,您还应该实现某种基本安全性,例如将“秘密”参数传递给Rails应用程序以验证请求者。只需在Rails应用程序中提供类似的路径(在Rails 2.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应用中,您只需拨打电话即可在http://your.railsapp.com/php/embed?secret=somesecretkey下载网址内容。

答案 2 :(得分:0)

是的,这是可能的。最简单的方法是部分嵌入这个嵌入式部分。

在您的操作上添加新操作或参数。当你检测到它是一个嵌入式渲染时,只是你的部分

render :partial => 'my_embedded'