Прокси-контроллер Rails не тянет изображения должным образом, как изменить соответствующим образом? - PullRequest
5 голосов
/ 17 января 2012

Мне нужно реализовать прокси в приложении на Rails 3.1, чтобы преодолеть некоторые междоменные проблемы с JS.

До сих пор он получал текстовый источник веб-страницы, казалось бы, правильный, однако обычно он пропускает изображения (возможно, относительные пути?) На странице, а затем, когда я направляю его с абсолютным путем к изображению, он показывает кодировка ascii изображения , а не само изображение, я думаю по понятным причинам из кода для кого-то, знакомого с темой.

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

proxy_controller.rb:

class ProxyController < ApplicationController
  def get
    url = URI.parse(params["url"])
    result = Net::HTTP.get_response(url)
      render :text => result.body
  end
end

rout.rb:

get "proxy" => "proxy#get", :as => "proxy"

Позвонив по номеру:

http://<my_dev_server>/proxy?url=http://<somedomain.tld>/path/to/page/images/image.jpg

или

http://<my_dev_server>/proxy?url=http://<somedomain.tld>/path/to/page

Ответы [ 2 ]

10 голосов
/ 17 января 2012

вместо рендера, используйте send_data

0 голосов
/ 31 января 2015

я думаю, что вы должны использовать base64 encode, если вы покажете это get на html

send_data Base64.encode64(result.body), type: result.content_type, disposition: 'inline'

и в своем запросе html и javascript, используя

$('#image-wrapper').html('<img src="data:image/png;base64,' + data + '" />')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...