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