405 POST请求错误(AngularJS $ http)

时间:2017-04-13 10:01:53

标签: angularjs http google-api google-contacts

我想使用AngularJS $ http。

在Google Contacts API上发布帖子请求

我试着这样做:



var config = {
    headers: {
        // "Content-Type": "application/json",
        "Authorization": "Bearer " + gapi.auth.getToken().access_token,
        "GData-Version": "3.0"
    }
}

var data = {
    "test": "test"
}

$http.post('https://www.google.com/m8/feeds/contacts/default/full/', data, config);




但它返回" XMLHttpRequest无法加载https://www.google.com/m8/feeds/contacts/default/full/。预检的响应包含无效的HTTP状态代码405 "

此请求在Postman等RestClient上正在运行(返回201创建)。

如果有人可以向我解释为什么浏览器不允许使用此方法。

1 个答案:

答案 0 :(得分:1)

我认为问题是https://www.google.com/m8/feeds/contacts API根本不支持OPTIONS次请求。 405响应主要是说端点不支持OPTIONS请求,不一定是不支持POST

解决方案是使用Google自己的JavaScript API library而不是Angular的$http服务。

  

您可以使用JavaScript客户端库与Web应用程序中的Google API(例如人员,日历和云端硬盘)进行互动。

关于Google API库如何支持CORS请求,还有some documentation

这个库可能有一些Angular包装版本,可以让你的生活更轻松,但我没有挖过。