Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails代理控制器无法正确拖动图像,如何进行适当修改?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails代理控制器无法正确拖动图像,如何进行适当修改?

Ruby on rails Rails代理控制器无法正确拖动图像,如何进行适当修改?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我必须在Rails 3.1应用程序上实现一个代理,以克服一些跨域JS问题 到目前为止,我检索网页文本源似乎是正确的,但是它通常会丢失页面中的图像(可能是相对路径?),然后当我用绝对路径指向图像时,它将显示图像,而不是图像本身,我认为对于熟悉该主题的人来说,代码中有明显的原因 我希望有人能够修改以下代码,以便在图像代理情况下也能正常工作: proxy\u controller.rb: class ProxyController < ApplicationController def ge

我必须在Rails 3.1应用程序上实现一个代理,以克服一些跨域JS问题

到目前为止,我检索网页文本源似乎是正确的,但是它通常会丢失页面中的图像(可能是相对路径?),然后当我用绝对路径指向图像时,它将显示图像,而不是图像本身,我认为对于熟悉该主题的人来说,代码中有明显的原因

我希望有人能够修改以下代码,以便在图像代理情况下也能正常工作:

proxy\u controller.rb:

class ProxyController < ApplicationController
  def get
    url = URI.parse(params["url"])
    result = Net::HTTP.get_response(url)
      render :text => result.body
  end
end
get "proxy" => "proxy#get", :as => "proxy"
http://<my_dev_server>/proxy?url=http://<somedomain.tld>/path/to/page/images/image.jpg
通过以下方式调用:

class ProxyController < ApplicationController
  def get
    url = URI.parse(params["url"])
    result = Net::HTTP.get_response(url)
      render :text => result.body
  end
end
get "proxy" => "proxy#get", :as => "proxy"
http://<my_dev_server>/proxy?url=http://<somedomain.tld>/path/to/page/images/image.jpg
http:///proxy?url=http:///path/to/page/images/image.jpg

http:///proxy?url=http:///path/to/page

使用

而不是渲染,如果要在html上显示此get,我认为应该使用base64编码

send_data Base64.encode64(result.body), type: result.content_type, disposition: 'inline'
在html和javascript请求中使用

$('#image-wrapper').html('<img src="data:image/png;base64,' + data + '" />')
$('#图像包装器').html('')

好的,是的,这似乎可以达到目的,但是到目前为止,每次尝试都会直接下载文件,而不是将图像加载到浏览器或将网页加载到浏览器中。这最终可能不是什么大不了的事,但我的目标是通过nokogiri将其传递给需要处理的特定文件名。您需要设置正确的内容类型,以便浏览器知道如何处理传入的内容…例如,在这种情况下,似乎我无法拥有多用途代理,ie如果我理解正确,我需要创建一个
image\u proxy
general\u proxy
而不是一个catch-all?你的意思是——你需要通过代理为不同的请求返回不同的内容类型?对虽然你可以检测到请求数据的内容类型并将其反馈给客户端。好的,是的,这确实达到了我需要的技巧。通过将原始渲染行修改为:
send_data result.body,:type=>result.content_type,:disposition=>“inline”
我能够实现目标。