2016-11-21 62 views
2

如何將頭添加到針對跨域API的OPTIONS請求中?將身份驗證添加到選項請求

我正在使用的API需要在所有請求上將JWT標記設置爲Authorization標頭。

當我嘗試訪問的API角度,首先進行的是不關心我的頭一個OPTIONS要求我設置了這樣的「真實」的要求:

this._headers = new Headers({ 
    'Content-Type': 'application/x-www-form-urlencoded', 
    'Authorization': 'Bearer my-token-here' 
}); 

return this._http 
      .post(AppConfig.apiUrl + 'auth/logout', params, {headers: this._headers}) 
      ... 
      ... 

當沒有提供令牌,API會返回HTTP狀態401,Angular認爲OPTIONS請求失敗。

回答

7

根據CORS specification when a preflight request執行用戶憑證被排除在外。使用該方法OPTIONS

(...),並且具有以下附加約束:

  • (...)
  • 排除提交請求頭。
  • 排除用戶憑證。
  • (...)

(重點是我的)

考慮到這一點,這個問題似乎是對事物的API一面,這應該被接受OPTIONS請求無需認證