【问题标题】:405 Error with POST request (AngularJS $http)POST 请求出现 405 错误(AngularJS $http)
【发布时间】:2017-09-09 09:30:50
【问题描述】:

我想使用 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 创建)。

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

【问题讨论】:

  • $http.get 这不是发帖请求...
  • 我的错,我正在使用帖子^^

标签: angularjs http google-api google-contacts-api


【解决方案1】:

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

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

您可以使用 JavaScript 客户端库从您的网络应用程序与 Google API(例如人脉、日历和云端硬盘)进行交互。

还有some documentation 介绍了 Google 的 API 库如何支持 CORS 请求。

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

【讨论】:

  • 我会这样检查,谢谢你的帮助!是否可以为 Post req 调用 gapi.client.request() ?
猜你喜欢
  • 1970-01-01
  • 2014-12-04
  • 2014-11-20
  • 2017-06-23
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 2017-08-27
  • 2017-06-29
相关资源
最近更新 更多