2012-01-10 22 views
2

hereのように、rake-pipelineを使用してEmber.jsアプリケーション用にdevel環境を設定しています。rake-pipeline-web-filtersを使用したajax呼び出しのプロキシ

開発中に、私のHTMLとJavaScriptをhttp://0.0.0.0:9292にWEBrickに(私はかなり理解していないレーキフィルタマジック)によって提供されると、私はhttp://somename.local

マイアヤックス上のApacheが提供するPHPで開発されたRESTサービスを持っていますクライアントのアプリケーションからの呼び出しは、ブラウザのクロスドメイン・アヤックスのために失われています。この問題を回避するにはどうすればよいですか?

答えて

2

Assetfileで直接プロキシを設定することはできません。 config.ruファイルを作成し、rackupコマンドを使用してサーバーを起動する必要があります。あなたは、ラックおよびラックストリーミングプロキシの宝石をインストールする必要があります

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 

input "app" 
output "public" 

そしてconfig.ru:

ここでは例Assetfileです。

1

Rack::Proxyを使用して、必要なリクエストをプロキシに送信するだけで済みます。

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

ありがとうThomas、もう少し詳しく説明できますか?私はこのようなAssetfileを持っていますhttps://gist.github.com/1608930どこにRack :: Proxyコードを追加しますか? –

+0

これはメソッド、POST、DELETE、またはPUTをどのように転送しますか?すべてのメソッドをGETに変換しているようです。 – Lucas

関連する問題