2016-04-10 12 views
0

私がGETリクエストのために働くための基本的な許可を取得しようとしているが、私は2つの例外取得しています:私はangular2基本承認 - 405

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使用して、mは私のサービスは

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()); 
    } 

} 
です

私は郵便配達アプリ

enter image description here

私はそれをどのように修正することができますから、同じ要求をしようとすると、それは動作しますか?ポストマンで

答えて

1

、あなたはヘッダを送信している:

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リクエストを許可する方法があるはずです。

+0

あなたが正しいです、私は質問とコードを更新しました。私は405の応答を得ています –

+0

@ MurhafSousli私は私の答えを更新しました。 [これをチェックしてください](https://www.drupal.org/node/2311695)、 'OPTIONS'メソッドを許可するパッチがいくつかあります – Abdulrahman

+0

パッチはdrupalで動作しません8 –