2017-07-14 94 views
1

我與離子框架3.5.2測試和這裏的版本信息離子3.5.2授權頭在HTTP請求中缺少

enter image description here

我需要發送標有授權頭中的認證請求讓用戶登錄系統,就像這樣 enter image description here

我總是得到404錯誤,我已經啓用了CORS。我使用郵遞員進行仔細檢查,我向郵遞員發送同樣的請求,看起來沒問題。

我仔細檢查了提琴手,發現了一個區別,那就是頭部缺少授權,它不會與我的請求一起發送。由於郵遞員工作原因,我的代碼可能有些不正確,服務器實現沒有問題。

enter image description here enter image description here

這是由郵差送來的請求,經授權的頭,所以它是好的

,這裏是我的要求,沒有看到一起發送的授權頭,所以我得到了404

你能提醒我想念什麼嗎?

編輯1:添加一個屏幕截圖Anexon enter image description here

編輯2:7月15日] 我看到角被髮送我的方法OPTION請求,而郵遞員使用POST其中工程。我現在的問題是,我怎樣才能像郵差一樣發送郵件?

爲了以防萬一,爲了支持OPTION,我應該從服務器端實現什麼?但這是「萬一」,現在服務器在POST上看起來很好。

這裏是郵差

POST https://abc.xyz.com/SignIn HTTP/1.1 
 
Host: abc.xyz.com 
 
Connection: keep-alive 
 
Content-Length: 63 
 
Accept: application/vnd.softix.api-v2+json 
 
Postman-Token: c2aa12cc-ea95-59d6-79de-4829b96b759b 
 
Cache-Control: no-cache 
 
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop 
 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3147.0 Safari/537.36 
 
Authorization: Bearer yTJVNAb4_4h0BRTEA8MoNBuQhpKXuO6BvyIabbSDZMdBW_RTG2_tNME7R_RqeFqMjg2 
 
Content-Type: application/json 
 
Accept-Encoding: gzip, deflate, br 
 
Accept-Language: en-US,en;q=0.8,vi;q=0.6 
 

 
{ "Username" : "user", "Password" : "pass" }

,這裏是我的

OPTIONS https://abc.xyz.com/SignIn HTTP/1.1 
 
Host: abc.xyz.com 
 
Connection: keep-alive 
 
Access-Control-Request-Method: POST 
 
Origin: http://evil.com/ 
 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3147.0 Safari/537.36 
 
Access-Control-Request-Headers: authorization,content-type 
 
Accept: */* 
 
Referer: http://localhost:8100/ 
 
Accept-Encoding: gzip, deflate, br 
 
Accept-Language: en-US,en;q=0.8,vi;q=0.6

回答

0

你檢查這authHeader變量是不是空的?

其次,我正在使用以下headers.append('<header-type>', '<header-content>')而不是headers.set('<header-type>', '<header-content'>)。我認爲你是覆蓋頭值,所以我將其更改爲:

let authHeader = 'Bearer $(this.authTokenResponse.access_token)'; 

headers = new Headers(); 
headers.append('Authorization', authHeaders); 
headers.append('Accept', 'application/vdn.softix.api-v2+json'); 
headers.append('Content-Type', 'application/json'); 

// ... 

編輯1

而且,我注意到另一個不同之處。我使用後選擇直接作爲any對象類型,而不是使用RequestOptions構造:

let options = {}; 
options.headers = headers; 

post('<url_request>', signinRequest, options) 
    .map(res => res.json()) 
    .subscribe(data =>{ 
    this.signinResponse = data; 
    console.log(data); 
    }) 
+0

肯定Anexon,我已經添加截圖,我debuged,authHeader和頭都反對蠻好看的。我曾經使用'追加',但它也不起作用。 – khoailang

+0

似乎您通過發佈選項傳遞的所有標題都缺失。它可能與RequestOptions構造函數有關。 – Anexon

+0

非常感謝Anexon,我已經更新了使用RequisitionOptions與您所擁有的完全相同,但至今沒有運氣。我發現Angular使用方法OPTION發送我的請求,而郵遞員使用POST,而不是我的請求。我現在的問題是,我怎樣才能像郵差一樣發送郵件?我還用標題編輯了我的問題,以方便您查閱。謝謝。 爲了以防萬一爲了支持OPTION,我應該從服務器端實現什麼?但這是「萬一」,現在服務器在POST上看起來很好。 – khoailang

0

我想我找出我的問題。我使用了擴展名爲Allow-Control-Allow-Orginin的CORS擴展名,我認爲它可以工作,但是沒有。我改用代理來代替,那麼現在沒問題,我的代碼沒有任何改變。 enter image description here