2016-11-21 74 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请求无需认证