2017-01-27 3 views
1

Ich setze die Header-Antwort Token: abc von PHP. Wie bekomme ich den Wert aus dem Antwortheader?
dies mein CodeGet Response Header mit Winkel 2

isLogin(): Promise<any> { 
     let headers = new Headers; 
     headers.set('Token', 'absajsj'); //I can set the header 
     headers.get('Token'); // But this return NULL 

     //console.log(this.cookie.get('autologin')); 

     //let options = new RequestOptions({ headers: headers }); 

     return this.http.get(this.BASEURL + 'api/client/authentication/check', { headers: headers }) 
      .toPromise() 
      .then(res => { 
       let a = res; 
       console.log(a.headers.get('Token')) 
      }) 
      .catch(err => console.log(err)); 
    } 

dies der Code-Server. Ich benutze Codeigniter.

if ($this->auth->loggedin()) 
     { 
      $this->output 
       ->set_status_header(200) 
       ->set_content_type('application/json') 
       ->set_output(json_encode(['status' => $_COOKIE['autologin']])); 
     } else { 
      $this->output 
       ->set_status_header(200) 
       ->set_header('Token: abcks') 
       ->set_content_type('application/json') 
       ->set_output(json_encode(['status' => $_SERVER['HTTP_TOKEN']])); 
     } 

nehmen Sie Ihre Aufmerksamkeit auf else Block.

und dies ist der Antwort-Header. Ich benutze Firefox-Entwickler-Tools.
enter image description here

Antwort

1

für 2 Tage nach googeln. Ich habe festgestellt, dass dies ein Problem ist. Und um das zu lösen, fügen Sie einfach Allow-Origin-Header-Expose "Token" in .htaccess hinzu

Danke an euch, um mir Aufmerksamkeit zu schenken. Diese Gemeinschaft ist großartig. Ich werde dies als die Antwort markieren. Prost :)

+0

Ich hatte ein etwas anderes Problem, bei dem ich "Access-Control-Expose-Header" hinzufügen musste, aber Sie haben Header erwähnt, die geholfen haben. – Robert

0

Haben Sie versucht, stattdessen Append-Methode zu verwenden?

headers.append('Token', 'absajsj'); 
+0

ja, und keine Wirkung. : D Die Antwort vom Server ist JSON – Cecep

+0

Ich teste Ihren Code, und das Get/Set funktioniert. Haben Sie {Header} von '@ angular/http' importiert? –

+0

Entschuldigung. Ich habe diesen Thread bearbeitet. Ich meine, ich kann das Token vom Antwort-Header nicht bekommen. Die Konsole wird null gedruckt. – Cecep

-1

Bitte versuchen:

a.headers('Token') 
+0

Es gegeben err: kann einen Ausdruck aufrufen, dessen Typ eine Call-Signatur fehlt – Cecep

+0

können Sie das res.headers Objekt des Versprechens bitte drucken und posten –

+0

Ich wurde das Skript edded. Die Antwort ist wie das Bild. Es gibt kein Token in der Kopfzeile. – Cecep