質問

私は小さなレール(それは彼らが同じサーバー上で実行されている取得することはできません)別のドメインで動作することになるのXMLHttpRequestsを経由して別のサイトにコンテンツを提供するためにアプリを書かれています。私は、この材料へのアクセスを要求するWebページを許可するように私のレールのサーバ上で設定されたアクセス制御 - 許可 - 起源にする必要があります理解します。

Apacheでこれを行う方法をかなりよく文書化さそうですし、これはおそらく私がサイトを展開したら、私が使用するサーバーです。私はレールとやってするために使用していますとしてだけでWEBrickにを使用することを願っていますけれども、私は開発していますが。レール内の適切なHTTPヘッダーを提供するために、WEBrickにを設定する方法はありますか?

役に立ちましたか?

解決

あなたはRailsの上にいる場合は2ちょうどあなたのアプリケーションcontollerにこれを追加します。

before_filter :set_access

def set_access
  @response.headers["Access-Control-Allow-Origin"] = "*"
end

もちろん少し開いて何かに"*"を変更すると良いでしょう。

他のヒント

レール4( http://edgeguides.rubyonrails.org/security.html#default-headers

でのconfig / application.rbます:

config.action_dispatch.default_headers.merge!({
  'Access-Control-Allow-Origin' => '*',
  'Access-Control-Request-Method' => '*'
})

3.1

レール
class ApplicationController < ActionController::Base
  protect_from_forgery
  after_filter :set_access_control_headers

  def set_access_control_headers
    headers['Access-Control-Allow-Origin'] = '*'
    headers['Access-Control-Request-Method'] = '*'
  end
end
3.1 Railsは - 私が代わりにカスタムミドルウェアを追加しましたので、私のために仕事をしませんでしたafter_filterコントローラを使用します:

でアプリ/ミドルウェア/ cors_middleware.rbます:

# For icons to work in Firefox with CDN
class CorsMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    status, headers, body = @app.call(env)
    cors_headers = headers.merge({
      'Access-Control-Allow-Origin' => '*',
      'Access-Control-Request-Method' => '*'        
    })
    [status, cors_headers, body]
  end  
end

でのconfig / application.rbます:

require File.join(Rails.root, "app", "middleware", "cors_middleware")
config.middleware.insert_before ActionDispatch::Static, CorsMiddleware # Need it early in the chain to work for assets

のRails 2.3.8

before_filter :allow_cross_domain_access
def allow_cross_domain_access
  response.headers["Access-Control-Allow-Origin"] = "*"
  response.headers["Access-Control-Allow-Methods"] = "*"
end
ケースでは、ラックのミドルウェア・宝石などのソリューションをしたいです: https://github.com/cyu/rack-corsする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top