Yammer REST Api从不同的页面进行不同的调用

时间:2014-11-27 15:27:30

标签: javascript rest yammer

我有一段简单的代码,使用Yammer JavaScript api查找Yammer上的用户可用的组,它看起来有点像这样:

yam.platform.request({
 url: "groups.json?mine=1",
 method: "GET",
 success: function (data) {
     callback(data);
 },
 error: function (error) {
     console.log(error);
 },

});

调用是经过仔细包装的,因此每次页面请求只发生一次,但它似乎在完全任意的基础上成功或失败。答案看起来像这样:

Response Headers
Cache-Control:no-cache
Connection:keep-alive
Content-Type:application/json; charset=utf-8
Date:Wed, 26 Nov 2014 17:32:42 GMT
P3P:CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Server:nginx
Status:429
Transfer-Encoding:chunked
X-Date:1417023162896
X-Runtime:0.032459
X-UA-Compatible:IE=Edge,chrome=1

或者像这样:

Response Headers
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:https://my-access-origin.sharepoint.com
Access-Control-Expose-Headers:content-type, network_id, authorization, x-csrf-token, www-authenticate, x-xss-protection, ETag
Cache-Control:max-age=0, private, must-revalidate
Connection:keep-alive
Content-Type:application/json; charset=utf-8
Date:Thu, 27 Nov 2014 12:17:38 GMT
ETag:"123a45b67cd89ef01234ab45cd67ef"
P3P:CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Server:nginx
Status:200 OK
Strict-Transport-Security:max-age=31536000; includeSubDomains
Transfer-Encoding:chunked
X-Content-Type-Options:nosniff
X-Date:1417090658344
X-Robots-Tag:none
X-Runtime:0.066098
X-UA-Compatible:IE=Edge,chrome=1
X-XSS-Protection:1; mode=block

在前一种情况下,我在我的开发工具的“网络”面板中看到一条错误消息,如下所示:

  

XMLHttpRequest无法加载   https://api.yammer.com/api/v1/groups.json?mine=1&&_=123456。没有   '访问控制允许来源'标题出现在请求的上   资源。起源' https://my-access-origin.sharepoint.com'是   因此不允许访问。响应的HTTP状态代码为429。

由于以下几个原因,这没有任何意义 - 首先,请求在两种情况下都完全相同,其次是我得到了" 429太多请求"作为状态代码,但显式报告应设置Access-Control-Allow_origin标头。它在我的要求中从未出现过,但似乎确实存在于成功的回应中。

有人可以解释发生了什么吗?

1 个答案:

答案 0 :(得分:0)

首先确保您在Yammer注册的应用程序的“Javascript Origins”

中使用了网址

如果仍然是同一个问题那么它可能是:

这与Yammer rest API限制有关,超过了这个429错误 https://developer.yammer.com/restapi/

请在这篇文章中参考我的回答 XMLHttpRequest: Network Error 0x80070005, Access is denied