2016-01-14 83 views
2

我想通過使用Angular 2的http請求發送憑據,但Angular 2 Http get請求不會發送憑證。 我在做什麼錯?如何發送數據(Angular 2)?

$httpProvider.defaults.withCredentials = true; 

所以您的應用程序的配置將是這個樣子:

var creds = "username=" + this.username + "&password=" + this.password; 
var headers = new Headers(); 
headers.append('Content-Type', 'application/x-www-form-urlencoded'); 

http.get('http://localhost:3000', { 
headers: headers, 
credentials: creds 
}) 
.map(res => res.json()) 
.subscribe(
data => this.data(data), 
err => this.error(err), 
() => console.log('Done') 
+0

'RequestOptionsArgs'沒有憑據屬性:https://開頭的角.io/docs/ts/latest/api/http/RequestOptionsArgs-interface.html,它是一個'Header':https://angular.io/docs/ts/latest/api/http/Headers-class.html,你可以根據此規範設置標題:https://fetch.spec.whatwg.org/#headers-cl屁股,該憑據屬性設置了不同的東西,我相信你正在尋找'Authorization' Header來代替。 – Langley

回答

1

試試這個代碼,它必須努力:

var creds = "username=" + this.username + "&password=" + this.password; 
 
var headers = new Headers(); 
 
headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
 

 
http.get('http://localhost:3000' + creds, { 
 
headers: headers, 
 
}) 
 
.map(res => res.json()) 
 
.subscribe(
 
data => this.data(data), 
 
err => this.error(err), 
 
() => console.log('Done')

0
您的應用程序配置在try

angular.module('myappService', [ 
    'fdvService.constants', 
]).config(['$httpProvider',function ($httpProvider) { 
     $httpProvider.defaults.withCredentials = true; 
    }]); 
+1

這是角度1。 – Langley

2

我想你想使用的HTTP基本身份驗證訪問安全的HTTP資源。所以,你的證書需要在Authorization頭內設置,如下所述:

createAuthorizationHeader(headers:Headers) { 
    headers.append('Authorization', 'Basic ' + 
    btoa('username:password')); 
} 

getData() { 
    var headers = new Headers(); 
    this.createAuthorizationHeader(headers); 

    this.http.get('http://localhost:3000'', { 
    headers: headers 
    }).map(res => res.json()) 
    .subscribe(
     data => this.data(data), 
     err => this.error(err), 
    () => console.log('Done') 
} 

你可以注意到,您的憑據必須Base64編碼。

您的請求似乎是跨域的,因此CORS概念適用。你可以看看這個鏈接的更多細節:http://restlet.com/blog/2015/12/15/understanding-and-using-cors/。這就是說我不認爲你的問題與CORS有關。

我看不到RequestOptions類中的任何credentials屬性。

希望它可以幫助你, 蒂埃裏