2016-07-04 61 views
14

我尝试将授权标头设置为GET请求,以将用户认证为其他API。我正在使用Angular 2 RC1。 (我是一个初学者)。在获取请求角度上设置标题2

getTest(){ 
    let authToken = localStorage.getItem('auth_token'); 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    headers.append('Authorization', `Bearer ${authToken}`); 

    let options = new RequestOptions({ headers: headers }); 
    return this._http 
     .get(this._url,options) 
     .map(res => console.log(res)); 
    } 

我允许CORS在我的后端。

header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Request-Headers: Content-Type, Authorization"); 

我的控制台:

OPTIONS API/USERPROFILE/

的XMLHttpRequest不能加载/ USERPROFILE /。预检响应具有 无效HTTP状态码406

My request headers

任何想法?

+0

在这里看到完整的例子http://stackoverflow.com/a/34758630/5043867 –

回答

23

我认为你需要的Accept头的,而由于406个状态码...

let authToken = localStorage.getItem('auth_token'); 
let headers = new Headers({ 'Accept': 'application/json' }); 
headers.append('Authorization', `Bearer ${authToken}`); 

let options = new RequestOptions({ headers: headers }); 
return this._http 
    .get(this._url,options) 
    .map(res => console.log(res)); 

这允许你,告诉你在响应预期其内容类型的服务器...

Content-Type标题相当于指定您在请求中发送的内容的类型。在你的情况,不存在内容...

+0

我看,好像是第二个标题是现在的问题。没有它,它工作正常,但与授权标题,它不工作,406状态码。任何建议? –

+0

也许你在请求选项中使用'withCredentials'属性来'true'。它可以从RC2 ... –

2
autorization = { Authorization: 'Token adfasdfadf651f65asd1f65asdf' } 

this.http.get(url, { headers: autorization})