我正在使用如here所述的rake-pipeline为Ember.js应用设置我的开发环境。
在开发过程中,我的html和javascript由http://0.0.0.0:9292
上的webrick(我不太了解的rake-filter魔法)提供服务,我在Apache上为{{1}提供了一个由Apache开发的REST服务}
我的客户端应用程序的ajax调用因浏览器的反跨域-ajax而丢失。我该如何解决这个问题?
答案 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