Как я могу вставить результат веб-страницы в другую веб-страницу на другом веб-сайте? - PullRequest
2 голосов
/ 23 марта 2010

Я бы хотел, чтобы пользователи могли вызывать мое приложение ruby ​​on rails как сервис, который возвращает 'div' с html-содержимым в нем, и вставлять этот div в свое приложение (которое не будет приложением rails).

Например, предположим, что у кого-то есть свой собственный веб-сайт php, у которого есть шаблон верхнего / нижнего колонтитула, который отображается, и область содержимого страницы, которую они должны заполнить на основе некоторого HTML-кода, который я генерирую в своем приложении rails. Я хотел бы разрешить им, с php, звонить на мой сайт, получать сгенерированный мной div и вставлять его как html на свою страницу php.

Я пытаюсь разместить на своем сайте службу, которая возвращает HTML-контент, но фактически отображает этот контент как часть другого сайта, так что конечный пользователь видит только другой сайт и никогда не знает о моем. .

Кроме того, я могу использовать javascript на клиенте, чтобы сделать это, если это единственный способ, но я бы предпочел, чтобы приложение php обрабатывало это на сервере, если это возможно, чтобы клиент получал html, встроенный в исходный сервер, и похоже, все это было сгенерировано php-скриптом, который генерировал всю страницу. Я также хочу избежать использования iframe.

Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 23 марта 2010

Предполагая, что вам нужно сделать кросс-доменный запрос данных, и вы не можете просто использовать iframe, вы можете попробовать использовать JSONP , чтобы получить html, завернутый в JS.

2 голосов
/ 23 марта 2010

Что вы по сути хотите сделать, так это реализовать очень ограниченный 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.

0 голосов
/ 23 марта 2010

Да, это возможно. Самый простой способ сделать партиал этой встроенной детали.

Добавить новое действие или параметр в ваше действие. Когда вы обнаружите, что это встроенный рендер, ваш частичный

render :partial => 'my_embedded'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...