【问题标题】:angular2 basic authorization on get request - 405获取请求的angular2基本授权 - 405
【发布时间】:2016-04-10 06:43:38
【问题描述】:

我正在尝试获得处理 Get 请求的基本授权,但我遇到了 2 个例外:

OPTIONS http://localhost/drupal/user/1?_format=json

XMLHttpRequest cannot load http://localhost/drupal/user/1?_format=json. Response for preflight has invalid HTTP status code 405

我正在使用带有 drupal 8 后端的 angular2

这是我的服务

var _baseUrl = "http://localhost/drupal";

@Injectable()
export class DrupalService {

  private actionUrl: string;

  constructor(private _http: Http, private _apiUrl: DrupalApi) {

     this.actionUrl = _baseUrl + _apiUrl;
  }

  authHeaders() {

     let username = 'username';
     let password = 'password';

     let token = btoa(username + ':' + password);

     var headers = new Headers();
     headers.append('Authorization', 'Basic ' + token);

     headers.append('Content-Type', 'application/json');
     headers.append('Accept', 'application/json');

     return headers;
  }

  public GetSingle = (id: number): Observable<Response> => {
     return this._http.get(this.actionUrl + id + '?_format=json'
      , {headers: this.authHeaders()}).map(res => res.json());
  }

}

但是当我尝试来自邮递员应用程序的相同请求时它可以工作

我该如何解决?

【问题讨论】:

    标签: drupal get http-headers angular basic-authentication


    【解决方案1】:

    在 Postman 中,您发送的是标头:

    Authorization: Basic bXVyaGFmOmhleGFkZWNpbWFsMDU
    

    但是在角度你正在传递:

      headers.append('Authorization', 'Basic ' + btoa('bXVyaGFmOmhleGFkZWNpbWFsMDU'));
    

    最终会是:

    Authorization: Basic YlhWeWFHRm1PbWhsZUdGa1pXTnBiV0ZzTURV
    

    所以,只是不要将字符串转换为 base64

    headers.append('Authorization', 'Basic bXVyaGFmOmhleGFkZWNpbWFsMDU');
    

    更新

    错误代码 405 表示:Method Not Allowed,这意味着,drupal 不允许 OPTIONS 请求。我以前没有使用过 Drupal。但是,应该有办法允许OPTIONS 请求。

    【讨论】:

    • 你是对的,我已经更新了我的问题和代码。我收到 405 响应
    • @MurhafSousli 我已经更新了我的答案。 check this out,它有一些补丁允许OPTIONS 方法
    • @MurhafSousli this way 怎么样。搜索“在 drupal 8 上启用 CORS”会有所帮助,因为预检请求仅针对 CORS 请求发送
    • 是的,我已经评论过这个家伙的文章,他的补丁不起作用,它破坏了网站,我放弃了drupal
    猜你喜欢
    • 2022-07-20
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多