【问题标题】:Set headers on get request angular 2在获取请求角度 2 上设置标头
【发布时间】:2016-11-06 06:09:24
【问题描述】:

我尝试将 Authorization 标头设置为 GET 请求,以向其余 API 验证用户。我正在使用 Angular 2 RC1。 (我完全是初学者)。

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");

我的控制台:

选项 api/userProfile/

XMLHttpRequest 无法加载 /userProfile/。预检响应有 无效的 HTTP 状态码 406

My request headers

有什么想法吗?

【问题讨论】:

标签: angular get header xmlhttprequest http-status-code-406


【解决方案1】:

我认为您需要 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 标头用于指定您在请求中发送的内容的类型。在你的情况下,没有内容......

【讨论】:

  • 我明白了,现在看来第二个标题是问题所在。没有它,它可以正常工作,但是使用 Authorization 标头,它不起作用,406 状态代码。有什么建议吗?
  • 也许您在请求选项中使用withCredentials 属性到true。它可以从 RC2...
【解决方案2】:
autorization =  { Authorization: 'Token adfasdfadf651f65asd1f65asdf' }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-07
    相关资源
    最近更新 更多