1

我发现了一些关于此的内容,但大多数示例和解释已被弃用,并且不适用于 RC1。

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 进行调用。有什么帮助吗?

4

1 回答 1

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在请求选项中使用属性。

有关更多详细信息,请参阅这些链接:

于 2016-06-07T14:18:14.570 回答