2016-06-07 2 views
1

Я нашел что-то в этом отношении, но большинство примеров и объяснений устарели, и это неприменимо к RC1.Угловая 2 - http get withCredentials

import {Injectable} from "@angular/core"; 
import {Http, HTTP_PROVIDERS, Response, RequestOptions, URLSearchParams} from "@angular/http"; 
import 'rxjs/add/operator/map'; 
@Injectable() 
export class AuthService { 
constructor(private _http: Http) {} 
GetLoggedUser(){ 
    return this._http.get('http://dev/api/v1/current-user') 
    .map((res:Response) => res.json()) 
} 
} 

мне нужно сделать этот вызов именно так, как этого унаследованного кода:

$(document).ready(function() { 
        jQuery.ajax({ 
         type: 'GET', 
         url: 'http://dev/api/v1/current-user', 
         xhrFields: { 
          withCredentials: true 
         }, 
        }).done(function(data) { 
         $('#user').html(JSON.stringify(data)); 
        }); 
       }); 

Таким образом, в основном мне нужно сделать вызов с помощью withCredentials. Любая помощь ?

ответ

0

С RC1 вам нужно расширить BrowserXhr класс:

@Injectable() 
export class CustomBrowserXhr extends BrowserXhr { 
    constructor() {} 
    build(): any { 
    let xhr = super.build(); 
    xhr.withCredentials = true; 
    return <any>(xhr); 
    } 
} 

и переопределить BrowserXhr провайдера с расширенной:

bootstrap(AppComponent, [ 
    HTTP_PROVIDERS, 
    provide(BrowserXhr, { useClass: CustomBrowserXhr }) 
]); 

С предстоящей RC2, вы будете иметь возможность использовать withCredentials атрибут в параметрах запроса.

Смотрите эти ссылки для получения более подробной информации:

+0

RC2? Есть ли RC2 ?? хорошо знать !!! позвольте мне попробовать сначала использовать RC1 способ, которым вы написали ... BRB –

+0

Предстоящий RC2 ;-) Он еще не выпущен ... –

+0

О, хорошо! btw..Thierry, блок, содержащий «@injectable, класс экспорта CustomBrowserXhr», должен быть в той же службе, что и мой код? или, возможно, новый файл? или, может быть, на моем main.ts? Извините, я испытываю трудности с реализацией этого. –