1

編集:Railsへのプルリクエストでオプションメソッドを再度追加しました。これは現在ライブになっているはずです。以下の答えはもう必要ありません。process(:options, path, **args)オプション要求を実行するために呼び出します。

必要に応じて、詳細についてコミット 1f979184efc27e73f42c5d86c7f19437c6719612 を参照してください。

他の回答を読んだことがありますが、どれも Rails 5 では機能しないようです。もちろん、 xdomain を使用できる場合は、おそらく (編集: 私はこのビューを保持していません。CORS には利点があります) 高速 (プリフライト チェックなしで待ち時間が 2 倍になります!)、簡単 (ばかげたヘッダー/HTTP メソッドは不要) であるため、おそらく使用する必要があります。 !)、さらにサポートされています (基本的にどこでも動作します!)。ただし、CORS をサポートする必要があるだけで、CORS gem に関する何かが機能しない場合があります。

4

1 に答える 1

1

config/routes.rbファイルの先頭に次を配置します。

match "/example/",
  controller: "example_controller",
  action: "options_request",
  via: [:options]

そして、コントローラーに次のように記述します。

def options_request
  # Your code goes here.
end

統合テストの作成に関心がある場合は、process実際にはパブリック メソッドではないメソッドに関する誤った情報があります。統合テストからの OPTIONS リクエストをサポートするために、イニシャライザを作成し (私のものは at: です。config/initializers/integration_test_overrides.rbこれは、多くのものをオーバーライドするためです)、次のコードを追加します。

class ActionDispatch::Integration::Session

  def http_options_request(path)
    process(:options, path)
  end

end

http_options_request統合テストから呼び出すことができるように。

于 2016-10-03T20:43:14.817 に答える