2

我正在使用 rake-pipeline 为 Ember.js 应用程序设置我的开发环境,如此处所述

在开发过程中,我的 html 和 javascript 由 webrick(我不太了解的 rake-filter 魔术)提供服务,http://0.0.0.0:9292并且我有一个由 Apache 提供的用 php 开发的 REST 服务http://somename.local

由于浏览器的反跨域 ajax 功能,我来自客户端应用程序的 ajax 调用丢失了。我该如何解决这个问题?

4

2 回答 2

2

您不能直接在 Assetfile 中配置代理。您必须创建一个config.ru文件并使用该rackup命令启动服务器。

这是一个示例资产文件:

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

您必须安装 rack 和 rack-streaming-proxy gem。

于 2012-01-15T08:09:59.650 回答
1

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

  if request.path.start_with?("/api")
    URI.parse("http://localhost:80#{request.path}")
  end
于 2012-01-13T15:57:10.570 回答