私はEmber Dataを使い始めようとしていて、実際のリクエストの前にブラウザがOPTIONSリクエストを送信したので、すぐにこの問題が発生しました。「プリフライトリクエスト」を避けるにはどうすればよいですか?
開発中のバックエンドと通信しようとしているのは、ローカルマシンで動作するレール4.2サーバーです(rails s -b 0.0.0.0
で始まります) 私は現在、このapiを使ってAndroidとiosの両方から通信しています。私の最終目標は、既存のレールUIに加えてEmberアプリを提供することですが、それを置き換えてEmber UIしか持たない場合、それは問題ありません。
私はCORSに関する読書をしましたが、私はそれが何をしようとしているのかを少なくとも理解しています。私が正しく理解していれば、ブラウザは、Emberアプリケーションが、要求が行われているサーバー以外のサーバーによって提供されていると判断します。
だから私の質問は以下のとおりです。
- 私はこれらのCORS OPTIONS要求が必要とされていないような実サーバに私の燃えさしアプリを展開することができるだろうか? (つまり、私はレールアプリがブラウザにEmberアプリを渡すことができ、ブラウザはスクリプトのソースをリクエストのターゲットと同じで、プレファイトリクエストを必要としないと見なします)
- どうすれば入手できますかこれは開発の仕組みですか?私はember s --proxyに--proxyオプションがあることを知っています。これはこれのための解決策であるように思えましたが、動作させることができませんでした。
私がナビゲートすると私はhttp://localhost:3000/api/v1/users
レールにアクセスしようとしているサーバーのURLは次の応答ログに:これに基づき
Started GET "/api/v1/users" for 127.0.0.1 at 2016-04-17 10:02:01 -0400
を、私は私のエンバーアダプタが正しくセットアップされていると思う:
import JSONAdapter from 'ember-data/adapters/json-api';
export default JSONAdapter.extend({
host: 'http://127.0.0.1:3000',
namespace: 'api/v1'
});
その後、私はエンバーを開始しますこのコマンドのサーバ:
ember s --proxy http://127.0.0.1:3000
レールサーバは、次のリクエストを受信している:私はそのためのルートを持っていない(と私はどちらかしたくないと思う)ので、失敗し
Started OPTIONS "/api/v1/users" for 127.0.0.1 at 2016-04-17 09:36:51 -0400
。