2017-12-14 10 views
0

기본 인증과 함께 게시물 요청이 있습니다.기본 인증이 Angular2와 작동하지 않습니다.

public login = (resrc: string, item: any): Observable<any> => { 
     this.headers.append('Authorization', 'Basic ' + btoa(item['userName']+':'+item['password'])); 
     return this._http.post(this._beconfig.Server + "login/api/" + resrc, {headers: this.headers}) 
      .timeoutWith(5000, Observable.throw(new Error('Request timed out.'))) 
      .map((response: Response) => { return response; }) 
      .catch(this.handleError); 
    } 

여전히 브라우저에서 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다.

잘못된 점을 도와주세요.

+0

이 확실 사용자 이름과 암호 있습니까 맞습니까? – Henry

답변

0

옵션 본문 대신 요청 본문에 헤더를 보내고 있습니다.

let options = new RequestOptions({ headers: this.headers }); 
this._http.post(this._beconfig.Server + "login/api/" + resrc, {}, options) 
:

post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>; 

그래서 당신이 RequestOptions가이처럼 헤더를 넣어 세 번째 인수에 반대해야

여기에 구현하거나 각 HTTP 모듈을 사용하는 경우 포스트 방법이다

그리고 Angle 4.3 이상에서 HttpClient를 사용하는 경우 post 메서드의 구현은 약간 다릅니다.

post(url: string, body: any | null, options: {...}): Observable<any> 
,

그리고 당신은 다음과 같은 코드를 작성해야이 기능을 사용하려면

let headers = new HttpHeaders(); 
headers = headers.set('Content-Type', 'application/json; charset=utf-8'); 
this._http.post(this._beconfig.Server + "login/api/" + resrc, {}, {headers: headers}) 
+0

고마워요. @ e.m.b, null body {}를 보내는 것은 내가 놓친 것입니다. –