2010-03-23 199 views
2

我想允許用戶在Rails應用程序中調用我的ruby作爲服務,該服務返回一個帶有html內容的「div」,並​​將該div嵌入到他們的應用程序中(這不會是Rails應用程序)。如何將網頁的結果嵌入另一個網站的另一個網頁?

例如,假設有人擁有自己的php網站,該網站具有可渲染的頁眉/頁腳模板以及基於我在rails應用程序中生成的一些html填充的頁面內容區域。我想讓他們,從PHP,打電話到我的網站,得到我生成的'div',並將其作爲html嵌入到他們的PHP頁面中。

我想要做的是在我的網站上託管一項服務,該服務返回一些html內容,但實際上將該內容顯示爲另一個網站的一部分,以便最終用戶只能看到其他網站並且從未真正瞭解礦。

此外,我可以在客戶端使用JavaScript來做到這一點,如果這是唯一的方法,但我更喜歡PHP應用程序來處理這在服務器上,如果可能的話,所以客戶端獲取從原始服務器嵌入的HTML和它看起來像是由生成整個頁面的php腳本生成的。我也想避免使用iframe。

這可能嗎?

+0

超過一年後,這樣一個基本問題沒有真正的答案?奇怪。 – Oscar 2011-06-19 21:15:28

回答

2

假設你需要數據的跨域請求,你不能只用一個iframe,你可以嘗試使用JSONP去取包裹的HTML在JS中。

+0

這很有趣。我認爲它會工作,但我寧願讓PHP腳本處理這個,只是在頁面內返回HTML(而不是使用JavaScript),如果可能的話。 – NotDan 2010-03-23 18:37:21

+0

那麼PHP腳本可以處理實際插入的HTML,但爲了jsonp的工作,它需要調用回調並通過html。你返回的HTML只是一個字符串,所以它不會真的是很多的JavaScript,大多是直接的HTML。 – 2010-03-23 18:58:43

0

是的,這是可能的。最簡單的方法是對這個嵌入式部分進行部分修改。

在您的動作中添加新動作或參數。當你發現它是一個嵌入式渲染只是你的部分

render :partial => 'my_embedded' 
+1

我想從一個非ru​​by應用程序做到這一點,並讓它在不同的web服務器上調用我的ruby應用程序來獲取html。 – NotDan 2010-03-23 18:29:17

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應用程序,你只需做打電話下載URL的內容http://your.railsapp.com/php/embed?secret=somesecretkey

相關問題