2017-02-18 15 views
0

私はSlim3フレームワークのリモートURL(http://xxx.cloudapp.net/xxx/api/v1/login/username/password)への投稿要求を行うionic-angularjsアプリを持っていますが、スクリーンショット

screenshot

同じことが、私は別のIPアドレスにREST APIをホストする場合にも発生します。

私はコードワットホワイトリストプラグインを追加するなどのソリューションを見たことがありますが、それでもエラーは持続します(プラグインの削除と追加、アンドロイドプラットフォームの削除と追加も)。私もCORSを設定しています。

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Headers: Origin, Content-Type,x-www-form-urlencoded, x-xsrf-token, X-Auth-Token , Authorization'); 
header('Access-Control-Allow-Credentials: true'); 
header('Access-Control-Max-Age: 86400');  
header('Access-Control-Allow-Methods: POST, GET, DELETE, OPTIONS, PUT');   

最大のジレンマは、私はChromeブラウザを使用してテストしたときにアプリが非常にうまく動作しますポストマンであり、また、インストール中にAPKファイルと電話がWIFIの上にあるときに、私は携帯電話を使用しているとき、それはまた、正常に動作しますこのIP(172.22.2.38:8080)を持つ1つのモバイルプロバイダー以外の異なるモバイルプロバイダーからのデータ。

別の奇妙なことは、(172.22.2.38:8080)にあるプレイストアからダウンロードされたAdvanced Rest APIを使用して投稿リクエストを送信すると、Body-> Type 'x-www-form-urlencoded'に変更します。だから問題は、私がangularjs $ httpでpostリクエストを使うときのようです。

これはAndroidManifest.xmlを(その一部)

<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="25" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.RECORD_VIDEO" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

で、config.xmlには、私は任意のほぼ二週間のために立ち往生してきた

<access origin="*" subdomains="true"/> 
<allow-navigation href="*"/> 

<plugin name="cordova-plugin-device" spec="~1.1.3"/> 
<plugin name="cordova-plugin-console" spec="~1.0.4"/> 
<plugin name="cordova-plugin-splashscreen" spec="~4.0.0"/> 
<plugin name="cordova-plugin-statusbar" spec="~2.2.0"/> 
<plugin name="ionic-plugin-keyboard" spec="~2.2.1"/> 
<plugin name="cordova-plugin-whitelist" spec="https://github.com/apache/cordova-plugin-whitelist.git"/> 
<plugin name="cordova-plugin-contacts" spec="~2.2.1"/> 
<plugin name="cordova-plugin-camera" spec="~2.3.1"/> 
<plugin name="cordova-plugin-media-capture" spec="~1.4.1"/> 
<plugin name="cordova-plugin-file" spec="~4.3.1"/> 
<plugin name="cordova-plugin-file-transfer" spec="~1.6.1"/> 

この(その一部)のように見えます助けが大いに評価されるでしょう。

答えて

0

これを試してください。 config.xmlに 、あなたのドメインへのアクセス&ナビゲーションを許可:以下のようにコンテンツのセキュリティ・ポリシーを追加し、index.htmlの中で次に

<access origin="http://yourdomain1.com" /> 
<allow-navigation href="http://yourdomain1.com" /> 

を:

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

サーバーのURLとhttp://yourdomain1.comを交換してくださいあなたが呼び出しているところから

1

問題はプロキシであり、仮想ホストconf(/etc/apache2/sites-available/000-default.conf)でこれを行わなければなりませんでした。

ProxyRequests On 
    ProxyVia On 
    ProxyTimeout 60 
    <Proxy "*"> 
      Order allow,deny 
      Allow from all 
    </Proxy> 

リモートサーバーへのポストリクエストを行うと完全に機能します。

関連する問題