2

以下についてアドバイスをお願いします。

Rails をバックエンドとして emberjs で記述された Web アプリケーションがあります。そして今、このアプリケーションを phonegap で iOS に移植しようとしています。私が苦労しているのは、iPhone で動作する API エンドポイントを設定する方法ですか?

EmberJs をブラウザー経由で Web で使用すると、現在の場所を使用して API 要求を発行することを理解していますが、アプリケーションを iOS アプリとして使用する場合、このアプローチは機能しません。

ホスト名などを単に置き換えるためのエレガントなソリューションを本当に探していますか?

手伝ってくれてありがとう!

アップデート:

これは、API URL を変更するために機能します

DS.RESTAdapter.reopen({
  url: 'http://somedomain.com'
});

しかし今、アクセス制御の問題があります:

Origin http://somedomain.com is not allowed by Access-Control-Allow-Origin. 
4

1 に答える 1

4

アダプターの構成方法に関するコードを投稿していないため、これがアダプターのカスタム URL を設定する正しい方法です。

DS.RESTAdapter.reopen({
  url: 'https://somedomain.com/api'
});

次に、たとえば のモデルがある場合App.User、 のリストのリクエストはそれぞれApp.Userに行きhttps://somedomain.com/api/user/、特定のユーザー IDのリクエストは行きhttps://somedomain.com/api/user/123ます。

アップデート

--disable-web-securityブラウザーからテストする場合は、クロス オリジンを機能させるフラグを指定してブラウザー (クロムを想定) を起動する必要があります。HTTP HEADERSただし、実際には、次を使用して応答を設定するようにサーバーを構成する必要があります。

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, ...

したがって、Rails の場合、次のようにしてサーバー側のコントローラーを設定し、クロス オリジン リクエストを受け入れ、それに応じてヘッダーを設定できます。

...
after_filter :cors_set_access_control_headers

def cors_set_access_control_headers
  headers['Access-Control-Allow-Origin'] = '*'
  headers['Access-Control-Allow-Methods'] = 'POST, GET, PUT' # etc. etc.
  headers['Access-Control-Max-Age'] = "1728000"
end
...

Rails 用に CORS を構成する方法に関するより広範な例については、たとえば「CORS for JSON and Rails」を検索できます。

それが役に立てば幸い

于 2013-05-31T23:01:58.563 に答える