2017-01-27 7 views
1

私はヘッダ応答をToken: abcに設定しました。レスポンスヘッダーから値を取得する方法は?
この私のコード角度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)); 
    } 

これはサーバコード。私は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']])); 
     } 

ブロックelseに注目してください。

これは応答ヘッダーです。私はfirefoxの開発ツールを使用します。
enter image description here

答えて

1

を2日間グーグル後。私はこれがコルズの問題であることを発見しました。これを解決するには、.htaccessにAllow-Origin-Header-Expose "Token"を追加してください。

私に注意を促してくれてありがとう。このコミュニティは最高です。私はこれを答えとしてマークします。乾杯:

+0

"Access-Control-Expose-Headers"を追加する必要があったのと少し違った問題がありましたが、ヘッダーに言及すると助けになりました。 – Robert

0

代わりにappendメソッドを使用しようとしましたか?

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

いいえ、効果はありません。 :D サーバーからの応答はJSON – Cecep

+0

私はあなたのコードをテストし、get/setが動作します。 {@ angular/http}から{Headers}をインポートしましたか? –

+0

申し訳ありません。私はこのスレッドを編集しました。私は応答ヘッダーからトークンを取得することはできません。コンソールにはnullが出力されています。 – Cecep

-1

てみてください:

a.headers('Token') 
+0

それは与えられたerr:cantはタイプが呼出し署名を欠いている式を呼び出す – Cecep

+0

約束のres.headersオブジェクトを印刷して投稿できますか –

+0

私はスクリプトを編集しました。応答は画像のようです。ヘッダーにトークンがありません – Cecep

関連する問題