2016-04-20 17 views
0

私はAngularJSを使っているPhoneGapアプリを持っています。私は、ノードのバックエンドにかなりシンプルな$ httpコールを使用しています。PhoneGapは私の仕事に関係なくRESTサービスを使いたくない

$http.get("http://localhost:6969/random") 
    .then(function(response) { 
     $scope.images = response.data; 
    }); 

PhoneGapは決してバックエンドにヒットしません。私は通常のブラウザでそれをテストし、期待どおりに動作します。

は、私は明らかにそれについてたくさん読みましたし、ほとんどの人はそれがホワイトリストを使用して修正することができますが、として私​​3210、私のホワイトリストでは約などのオープンです:

<plugin name="cordova-plugin-whitelist" source="npm" spec="1.1.0" /> 
    <allow-navigation href="*" subdomains="true" /> 
    <allow-intent href="*" subdomains="true"/> 
    <access origin="*" subdomains="true"/> <!-- Required for iOS9 --> 

私は何を変更する必要がありますか?このバグは数日後に起きていました。私の自由な時間に新しいクールな機能を実際に作り出すことができないのはちょっと面倒です。

編集:phonegap serveを使用してアプリを提供しており、PhoneGapデベロッパーアプリケーションを使用してテストしています。

+0

あなたはホワイトリストプラグインをインストールしましたか?コードワプラグイン-lは何を返しますか? – user1027620

+0

うん、私はちょうど確かめるためにそれを再インストールしようとしました、そして、それは 'クライアントgit :(マスター)✗cordova plugin add cordova-plugin-whitelist プラグイン" cordova-plugin-whitelist "が既にアンドロイドにインストールされていると言います。 プラグイン "cordova-plugin-whitelist"が既にブラウザにインストールされています。 –

+0

申し訳ありません@ user1027620は、 'cordova-plugin -l'の出力です:' codeova-plugin-whitelist 1.2.2-dev "ホワイトリスト" ' –

答えて

1

Ajaxリクエストの送信先を指定するconnect-src句を含めるようにコンテンツセキュリティポリシーを変更する必要があることをお勧めします。あなたはコメントで掲示さCSPメタタグを取る

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'" />

私は、どこかにAjaxリクエストを開くことが(ちょうどドメインにそれを支配し、その後に役立ちますかどうかを確認するために、これを修正することをお勧めだろうあなたは後にサポートしたいと思っています。

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src *">

それが動作し、あなただけの1ドメインにロックダウンしたい場合は、後であなたが何かしたいと思います:私はさらに

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://api.mydomain.com">

は、CSPのようになり推奨しましたホスト名やIPアドレスでサーバーに接続するためにアプリケーションのコードを変更する必要があると思うので、デバイス上で 'localhost'とデバイス自体を混同して接続を試みることはありませんデバイスのポート6969に接続します。

ので:

$http.get("http://localhost:6969/random")

になる必要があるかもしれません:

$http.get("http://myhost.mydomain.com:6969/random")

それとも

$http.get("http://xxx.xxx.xxx.xxx:6969/random")

は、この上のいくつかのリソースをありますオンライン:

+0

それは本当に変更されませんでした最初の試みでは大いに。私はあなたのブログの記事を読んでいるとうまくいけばそれは助ける。 PhoneGapデベロッパーアプリケーションが自分のconfig.xmlまたはタグの変更を尊重していないという変更はありますか? –

+0

デバイス/エミュレータで実際にデプロイしてみましたか?私は残念なことにPhoneGapデベロッパーアプリの機能に精通していません。 –

+0

私はこの時点では多かれ少なかれプロトタイプを作成していますが、まだこのアプリではなくエミュレータでテストする必要があるようです。私はここに戻って、私が見つけたものを更新します。これまでのご協力ありがとうございます! –

関連する問題