2010-03-23 2 views
2

사용자가 내 Ruby를 레일 앱에 호출하여 HTML 콘텐츠가 포함 된 'div'를 반환하는 서비스로 허용하고 해당 div를 레일 애플리케이션이 아닌 해당 앱에 포함시킬 수 있습니다.웹 페이지의 결과를 다른 웹 사이트의 다른 웹 페이지에 퍼가려면 어떻게해야합니까?

예를 들어 누군가 머리말/꼬리말 템플릿이 렌더링되는 PHP 웹 사이트가 있고 페이지의 콘텐츠 영역이 내 레일 앱에서 생성하는 HTML을 기반으로 채워야한다고 가정합니다. 나는 그들에게 PHP에서, 내 웹 사이트에 전화를하고, 내가 생성하는 'div'를 얻고, HTML로 php 페이지에 삽입 할 수있게하고 싶다.

내가하려는 것은 내 사이트에서 일부 HTML 콘텐츠를 반환하지만 실제로는 다른 사이트의 일부로 콘텐츠를 표시하므로 최종 사용자는 다른 사이트를보고 실제로 알지 못하는 서비스를 호스팅하는 것입니다. 광산.

또한이 방법을 사용하는 경우 클라이언트에서 javascript를 사용하여이 작업을 수행 할 수 있지만 가능한 경우 서버에서 처리하도록 PHP 응용 프로그램을 선호하므로 클라이언트가 원본 서버에서 HTML을 가져오고 그것은 마치 전체 페이지를 생성 한 PHP 스크립트에 의해 생성 된 것처럼 보입니다. 나는 또한 iframe 사용을 피하고 싶다.

이것이 가능합니까?

+0

1 년이 지난 후에도 근본적인 질문에 대한 답변이 없습니까? 놀라운. – Oscar

답변

2

부분, 당신은 포장 HTML을 가져 JSONP를 사용하여 시도 할 수 JS에서.

+0

그건 재미 있어요. 나는 그것이 효과가 있다고 생각하지만 차라리 PHP 스크립트가 이것을 처리하고 가능하다면 (JavaScript를 사용하는 대신) 페이지 내에서 html을 반환한다. – NotDan

+0

글쎄, PHP 스크립트는 실제로 html을 삽입하는 것을 처리 할 수 ​​있지만 jsonp가 작동하려면 콜백을 호출하고 html을 전달해야합니다. 당신이 반환 HTML은 문자열에 그냥있을 것이다, 그래서 정말 많은 자바 스크립트, 대부분 똑바로 최대 HTML되지 않을 것이다. –

0

예 가능합니다. 가장 쉬운 방법은이 임베디드 파트의 일부분입니다.

조치에 새 조치 또는 매개 변수를 추가하십시오. 당신은 렌더링 포함 된 것 감지 할 때 당신의 당신은 데이터의 크로스 도메인 요청을 할 필요가 가정, 당신은 그냥 iframe을 사용할 수 없습니다

render :partial => 'my_embedded' 
+1

나는 이것을 루비가 아닌 응용 프로그램에서하고 싶습니다. 다른 웹 서버의 루비 응용 프로그램을 호출하여 HTML을 가져 오도록하고 싶습니다. – NotDan

2

본질적으로 바라는 것은 매우 제한된 RESTful API를 구현하는 것입니다. 액세스 권한이있는 유일한 사람이라면 Rails 앱에 'secret'매개 변수를 전달하여 요청자를 확인하는 것과 같은 일종의 기본적인 보안을 구현해야합니다.

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 응용 프로그램에서, 당신은 단순히 확인해야합니다 : 컨트롤러에서 다음

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

: 간단하게 (레일 인 2.3.x에서)이 같은 레일즈 응용 프로그램 무언가에 경로를 제공 http://your.railsapp.com/php/embed?secret=somesecretkey에 URL 내용을 다운로드하라는 전화.

관련 문제