使用 angular 2 获得响应 Header

Get Response Header with angular 2

我从 php 设置了 header 响应 Token: abc。如何从响应 header 中获取值?
这是我的代码

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 街区。

这是响应 header。我使用 firefox 开发工具。

您是否尝试使用 append 方法来代替?

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

请尝试:

a.headers('Token')

谷歌搜索 2 天后。我发现这是一个cors问题。要解决这个问题,只需在 .htaccess

中添加 Allow-Origin-Header-Expose "Token"

感谢大家的关注。这个社区很棒。我会将此标记为答案。干杯:)