2017-02-18 2 views
0

Ich habe eine ionic-angularjs App, die eine Anfrage an eine Slim3 Framework Remote-URL (http://xxx.cloudapp.net/xxx/api/v1/login/username/password) tut, aber ich bekomme immer den 404-Status-Code wie in der zeigen Screenshot

screenshot

Das gleiche passiert auch wenn ich das REST-API in einer anderen IP-Adresse hosten.

Ich habe alles überprüft und ich habe Lösungen wie das Hinzufügen der Cordova-Whitelist-Plugin, die ich getan habe, aber immer noch den Fehler bestehen (sogar Entfernen und Hinzufügen des Plugins wieder und auch Entfernen und Hinzufügen der Android-Plattform) gesehen. Ich habe sogar die CORS gesetzt.

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');   

Das größte Dilemma ist die App sehr gut funktioniert, wenn ich die Chrome-Browser-Test, Postbote und auch, wenn die Datei APK in installiert und das Telefon auf WIFI ist, funktioniert es auch gut, wenn ich mobil bin mit Daten von einem anderen Mobilfunkanbieter mit Ausnahme eines Mobilfunkanbieters mit dieser IP (172.22.2.38:8080).

Eine weitere seltsame Sache ist, wenn ich die Post-Anfrage mit der Advanced Rest API vom Play Store heruntergeladen, wenn in der (172.22.2.38:8080) die Anfrage den 200 Statuscode zurückgibt, solange ich die Body-> Type zu "x-www-form-urlencoded". So scheint das Problem zu sein, wenn ich post-Anfrage mit angularjs $ http benutze.

Dies ist der AndroidManifest.xml (ein Teil davon)

<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" /> 

und config.xml sieht wie folgt aus (ein Teil davon)

<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"/> 

ich jede für fast zwei Wochen stecken wurden Hilfe wird sehr geschätzt.

Antwort

0

Versuchen Sie dies.

<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';"> 

ersetzen http://yourdomain1.com mit Ihrem Server url: In Config.xml, Zugang & Navigationen Ihre Domains erlauben: die Content-Sicherheitspolitik, wie unten

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

Dann in index.html, fügen von wo Sie anrufen

1

Das Problem war mit dem Proxy, musste ich dies in virtuellen Host-Conf (/etc/apache2/sites-available/000-default.conf) tun.

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

Dieser funktioniert perfekt, wenn ich eine Post-Anfrage an einen Remote-Server machen.

Verwandte Themen