在我的應用程序(Angular 2/Ionic 2)我實現了我自己的登錄/認證。基本上它是這樣工作的:在登錄時,用戶名和密碼正在由PHP後端驗證。生成一個令牌,然後將其發送回頭部的前端(授權)。來自後端的響應如下所示:Angular 2:獲取授權標題
HTTP/1.1 200 OK
Host: localhost:8080
Connection: close
X-Powered-By: PHP/5.6.28
Set-Cookie: PHPSESSID=jagagi2le1b8i7r90esr4vmeo6; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: application/json
Authorization: d7b24a1643a61706975213306446aa4e4157d167eaad9aac989067a329c492d3
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept, Origin, Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Content-Length: 301
顯然存在具有令牌存在的授權標頭。 因爲我在Allow-Headers標頭中看到了授權,CORS似乎也被正確設置。
但是,當我試圖讓頭部在角2,它總是返回null:
private extractDataAndSetAuthHeader(res: Response) {
// Set auth header if available.
// If not available - user is not logged in. Then
// we also have to remove the token from localStorage
if(res.headers.has("Authorization"))
{
let token = res.headers.get("Authorization");
this.setToken(token);
}
else
{
// If no token is sent, remove it
this.removeToken();
}
let body = res.json();
return body.data || { };
}
方法的第一行還給假的。此外,當我檢查頭在我的響應對象,它顯示我只有以下(Chrome瀏覽器開發工具):
[[Entries]]:
Array[4]
0:{"pragma" => Array[1]}
1:{"content-type" => Array[1]}
2:{"cache-control" => Array[1]}
3:{"expires" => Array[1]}
有出現在該對象中沒有授權頭。
任何人都可以幫我嗎?
感謝提前:)
'Authorization'通常用作請求標頭,而不是r esponse。你爲什麼不在響應的主體中返回訪問令牌? –
因爲據我所知,這是'Authorization'頭的用途。在每個請求(當用戶登錄時),我在請求中發送Authorization標頭,檢查標記是否仍然有效,然後爲了更安全,重新生成標記,並將其發回到前端,授權標題。 我錯過了什麼嗎? – dave0688
http://stackoverflow.com/q/42306684/2587435 –