使用rake-pipeline-web-filters调用ajax的代理

时间:2012-01-10 20:33:52

标签: rake-pipeline

我正在使用如here所述的rake-pipeline为Ember.js应用设置我的开发环境。

在开发过程中,我的html和javascript由http://0.0.0.0:9292上的webrick(我不太了解的rake-filter魔法)提供服务,我在Apache上为{{1}提供了一个由Apache开发的REST服务}

我的客户端应用程序的ajax调用因浏览器的反跨域-ajax而丢失。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您无法直接在资产文件中配置代理。您必须创建config.ru文件并使用rackup命令启动服务器。

这是一个示例Assetfile:

input "app"
output "public"

和config.ru:

require 'rake-pipeline'
require 'rake-pipeline/middleware'
require "rack/streaming_proxy" # Don't forget to install the rack-streaming-proxy gem.

use Rack::StreamingProxy do |request|
  # Insert your own logic here
  if request.path.start_with?("/api")
    "http://localhost#{request.path.sub("/api", "")}"
  end
end

use Rake::Pipeline::Middleware, 'Assetfile' # This is the path to your Assetfile
run Rack::Directory.new('public') # This should match whatever your Assetfile's output directory is

您必须安装机架和机架流代理宝石。

答案 1 :(得分:1)

您可以使用Rack::Proxy,然后只需将所需的请求发送给代理。

  if request.path.start_with?("/api")
    URI.parse("http://localhost:80#{request.path}")
  end