web-dev-qa-db-ja.com

CORSおよびphonegapアプリ

PhoneGapアプリケーションを動作させるには、CORSの変更(Access-Control-Allow-Origin:*の設定など)が必要ですか? Herokuでホストされる安らかなAPIがありますが、phonegapアプリケーションがサービスを呼び出すためにこのヘッダーを設定する必要があるかどうか疑問に思っていましたか?

Phonegapアプリケーションは実際にはドメインでホストされていないため、CORSは必要なく、クロスドメインの問題は発生しないと考えていましたか?

なぜそうなのか、そうでないのかを誰かに説明していただければ幸いです。

42
jcm

PhoneGapを使用すると、リモートサーバーに直接XHRを実行でき、「正常に動作する」はずです。クロスドメインポリシーはPhoneGapには適用されません(さまざまな理由により、基本的にアプリはデバイス上のfile:// URIから実行されているため)。

これらの外部ドメインにアクセスするには、アプリのホワイトリストを設定する必要があることに注意してください。このリンクを確認してください:

http://docs.phonegap.com/en/1.8.0rc1/guide_whitelist_index.md.html#Domain%20Whitelist%20Guide

28
user3225827

デフォルトのCordova(PhoneGap)プラットフォームは、HTMLファイルがローカルでホストされている(file://)およびWebドメインにアクセスしています。

ただし、iOSでは、 cordova-plugin-wkwebview-engine を介してUIWebViewから新しいWKWebViewに切り替える場合、CORSを実装する必要があります。

Cordova 5以降、ホワイトリストプラグインを追加する必要があります

https://github.com/Apache/cordova-plugin-whitelist

Config.xmlに追加します

<!-- Don't block any requests -->
<access Origin="*" />
2
aWebDeveloper

はいAPIをホストするサーバーでCORSをアクティブにする必要があります。 iOでPhonegapアプリを実行しています。私のアプリは、Apache上のサーバーAPIからjsonを要求します。データを取得するためにサーバー上でCORSをアクティブにします。そうしないと、アプリケーションにエラーもエラーもデータもありません。

構成ファイルのアクセスパラメータを使用すると、アプリケーションが照会を許可されているドメインをフィルタリングできますが、サーバーのアクセス許可は何も行いません。

2
hakimoun