2017-10-10 3 views
1

Ich arbeite an einer mobilen App. Ich brauche ein paar Daten von Wordpress-Website zu holen, aber die http Anfrage immer durch Fehler Antwort für Preflight hat ungültige HTTP-Statuscode 403Ionic 3 HTTP-Post-Anfrage ungültiger HTTP-Status-Code 403, während jQuery Ajax Post funktioniert einwandfrei

Typoskript

this._http.post('http://www.example.com/wp-admin/admin-ajax.php',{ 
     'action' : 'get_votes', 
     'postId' : 123456 
    }) 
    .subscribe(data=>{ 
     console.log(data); 
    },error=>{ 
    console.log(error); 
    }) 

jQuery

Das gleiche funktioniert in jQuery auf dem lokalen Server

$.ajax({ 
       url: 'http://www.example.com/wp-admin/admin-ajax.php', 
       type: 'post', 
       dataType: 'JSON', 
       data: { 
        'action': 'get_votes', 
        'postId': 123456 
       }, 
       success: function(result) { 
        console.log(result); 
       }, 
       error: function(error) { 
        console.log(error); 
       } 
      }); 

Die cordova-plugin-whitelist ist bereits installiert.

config.xml

<access origin="*" /> 
    <allow-intent href="http://*/*" /> 
    <allow-intent href="https://*/*" /> 

Antwort

1

Wenn Sie mit web browser testen, da müssen Sie Ursprung Zugang für web browser ermöglichen. mit Chrom verwenden Plugin und konfigurieren https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

Wenn Sie mit echten Gerät verwenden und es immer noch nicht funktioniert, versuchen Sie header('Access-Control-Allow-Origin: *'); mit Ihrer serverseitigen API-Datei zu verwenden.

Weitere Informationen here.

+0

Ich habe das Plugin für Chrome bereits installiert. Auch der 'header ('Access-Control-Allow-Origin: *');' ist in der API enthalten. Ich weiß nicht, eckige 'http' funktioniert nicht. Aber dieses Plugin 'cordova-plugin-advanced-http' funktioniert einwandfrei. – shah

0

Sie ionische Proxy verwenden können rund um die CORS Problem zu arbeiten,

ionic.config.json

"proxies": [ 
    { 
     "path": "/api", 
     "proxyUrl": "http://www.example.com/wp-admin/admin-ajax.php" 
    } 
    ] 

und Sie nennen es this.http.post("/api")

0

Dies ist ein CORS (Kreuz- Domain). Ihr Browser (nicht Angular) sendet eine OPTIONS-Anfrage, bevor er die eigentliche POST-Anfrage sendet. Effektiv verwirft Ihr Server die OPTIONS-Anfrage als nicht authentifiziert (oder in Ihrem Fall verboten). Bitte lesen Sie this Antwort für weitere Informationen.

Haben Sie versucht, einen 'content-type' Header als 'application/x-www-form-urlencoded' oder 'multipart/form-data' zu setzen? Ich denke, das würde dazu führen, dass der Browser keine OPTIONS-Anfrage sendet, bevor er die POST-Anfrage sendet. Also, auch wenn Sie das erste Problem lösen (mit dem Fehlen von OAuth Header), können Sie immer noch nicht in der Lage sein, POST, wegen des zweiten Problems.

Sie können auch versuchen und installieren Sie die Chrome Allow-Control-Origin extension.

Verwandte Themen