2016-07-11 4 views
3

Ich arbeite in der neuesten Beta-Version von Ionic und ich habe eine HTTP-Post-Methode auf meinem API-Server. Die Header werden jedoch nicht mit der Anfrage gesendet. Der Code, den ich verwendet habe, ist wie folgt: ** Ionic Version - Beta-8 & abgewinkelte Ausführung -rc.3Ionic 2 - Angular 2 http Header werden nicht mit der Anfrage gesendet

import {Page,App,NavParams} from 'ionic-angular'; 
import {Headers, Http, RequestOptions} from '@angular/http'; 
import {Component} from '@angular/core'; 
import 'rxjs/add/operator/map'; 

@Component({ 
    templateUrl : 'build/pages/xyz/xyz.html' 
}) 

export class Xyz{ 

    form:any; 
    token:any; 
    constructor(public app:App, navParams:NavParams, public http:Http){ 

     let code = {abc : 'abc'}; 
     let headers = new Headers(); 
     let body = JSON.stringify(code); 
     headers.append('Content-Type', 'application/json'); 
     headers.append('Authorization', 'Bearer ' + "tokenContent"); 
     let options =new RequestOptions({headers : headers, body:body}); 
     this.http.post('http://myserver/myapi', options) 
      .map(res => res.json()) 
      .subscribe(
       data=>{ 
        console.log(data.message); 
       }, 
       err=>{ 
        console.log(err); 
       }, 
       ()=>{ 
        console.log("Process Complete"); 
       } 
      ); 

Wenn ich console.log beide Optionen aussehen Objekt und Header werden die Header gesetzt richtig. Aber wenn ich die HTTP-Anfrage mache, werden sowohl die Header als auch der Body nicht gesendet, wenn ich sie in das Optionsobjekt lege. Aber wenn ich versuche, den Körper allein zu senden, kann ich ihn in der Anfrage-Nutzlast sehen.

+1

Sieht aus wie Sie 'body' Argument der' Post zu passieren vergessen habe() ' –

Antwort

2

Es funktioniert nicht, wenn Sie vom Browser testen .. Bitte überprüfen Sie die Dokumentation im Zusammenhang mit CORS-Anfragen.

http://blog.ionic.io/handling-cors-issues-in-ionic/

+0

ich CORS Problem im Backend behandelt haben. Mein Problem ist, dass die Header nicht gesendet werden. Ich mache einen Anruf auf eine authentifizierte Route, die das Autorisierungs-Token erfordert, aber da es nicht gesendet wird, kann ich die Transaktion nicht abschließen. –

+0

Ich hatte ein ähnliches Problem. Es ist definitiv ein CORS-Problem. Wenn Sie die Autorisierung in der Kopfzeile kommentieren, erhalten Sie eine Ausnahme 401. Bitte versuchen Sie Code von einem Emulator auszuführen (zB genymotion) – marius

3

Das ist, was sollte für Sie arbeiten, da der zweite Parameter für http.post ist der Körper:

headers.append('Content-Type', 'application/json'); 
headers.append('Authorization', 'Bearer ' + "tokenContent"); 
let options = new RequestOptions({ headers: headers }); 

this.http.post('http://myserver/myapi', body, options) 
    .map(... 
+0

Ich habe versucht, wie Sie sagten, aber es ist Zeitlimit auf OPTIONS Anfrage und die Header werden immer noch nicht gesendet .. –

+0

Dann haben Sie ein zusätzliches Problem im Zusammenhang mit CORS: http://blog.ionic.io/handling-cors-issues-in-ionic/ – rinukkusu

+0

Definitiv, das ist die Lösung! –

1

Prüfen Sie zunächst, ob dieses Problem für CORS ist oder nicht.

Versuchen Sie auch, den Code unten:

let headers = new Headers(); 
headers.append('Content-Type','application/x-www-form-urlencoded; charset=UTF-8'); 
this.http.post(`${this.link}`,'sRequest=' + sRequest1,{ headers: headers }); 
+0

Das Problem war ein CORS-Problem. Es ist jetzt gelöst. Vielen Dank. –