无法使用angular $ http

时间:2016-06-09 05:24:59

标签: angularjs http

我需要执行get并从控制台

获得此错误
Request header field client_id is not allowed by Access-Control-Allow-Headers in preflight response.

这就是我对标题的看法:

Access-Control-Request-Headers:accept, authorization, client_id

我想从此一次调用的请求标头中删除client_id,而不会影响全局设置。

以下是代码:

    $http.get(url,{
      headers: {"client_id": undefined }
    })
      .success(function (geoData) {
        d.resolve(geoData);
      })
      .error(function (err, status) {
        d.reject(err);
      });

但它没有效果。我错过了什么?

1 个答案:

答案 0 :(得分:1)

CORS问题引发此错误Read here了解有关预先请求的更多信息。您需要配置服务器以处理cos请求以允许客户标头参数,例如' client_id'。例如您的服务器 Access-Control-Allow-Headers 的配置值:

'Access-Control-Allow-Headers' : 'client_id','Content-Type, Authorization, Content-Length,

对于根据请求逐个执行句柄标头,您需要定义条件来构建标头。它应该是:

// build your header dynamic based on condition of request
var headerConfig = null;
if ('your condition to have client_id') {
    headerConfig = {"client_id": undefined }
}
else {
   headerConfig = {};
}

// request with headerConfig
$http.get(url,{
  headers: headerConfig
})
  .success(function (geoData) {
    d.resolve(geoData);
  })
  .error(function (err, status) {
    d.reject(err);
  });