Yammer JavaScript SDK -“访问控制允许来源”问题
Posted
技术标签:
【中文标题】Yammer JavaScript SDK -“访问控制允许来源”问题【英文标题】:Yammer JavaScript SDK - 'Access-Control-Allow-Origin' issue 【发布时间】:2014-07-26 02:41:00 【问题描述】:我正在尝试按照此处的说明发出 Yammer API 请求:https://developer.yammer.com/yammer-sdks/#javascript-sdk。当我运行这个例子时:
yam.getLoginStatus(
function(response)
if (response.authResponse)
console.log("logged in");
yam.platform.request(
url: "https://www.yammer.com/api/v1/users.json", //this is one of many REST endpoints that are available
method: "GET",
data: //use the data object literal to specify parameters, as documented in the REST API section of this developer site
"letter": "a",
"page": "2",
,
success: function (user) //print message response information to the console
alert("The request was successful.");
console.dir(user);
,
error: function (user)
alert("There was an error with the request.");
);
else
alert("not logged in")
);
我在 localhost 上执行此操作,但出现以下错误:
"XMLHttpRequest cannot load https://www.yammer.com/api/v1/users.json?letter=a&page=2&_=1401954073159. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access."
知道如何解决这个问题吗?
还有一件事。我无法在其中指定其他标头,因为此调用是作为“OPTIONS”而不是“GET”请求方法执行的。
希望有人对 Yammer 最新 API 有同样的问题并能够解决它。
谢谢
【问题讨论】:
这是排序的,Yammer 上的整个 JavaScript Origin 端有点不稳定,但最后我让它工作了 关于你如何使它工作的任何提示?也许你可以回答你自己的问题 嘿pcv。我在下一个答案中回答了这个问题:'实际的'错误'是由他们的错误文档引起的。 REST 端点是 api.yammer.com/api/ 而不是 www.yammer.com/api'。谢谢 嗯,这对我不起作用。无论我使用 www.yammer.com 还是 api.yammer.com,我都会收到错误消息 【参考方案1】:确保更新您的 Yammer 应用程序 JS 起源以匹配您正在测试的环境主机名。
您可以在此链接中配置这些来源:
https://www.yammer.com/client_applications
点击您的应用程序,然后点击“基本信息”。
【讨论】:
实际的“错误”是由他们的错误文档引起的。 REST 端点是 api.yammer.com/api/ 而不是 www.yammer.com/api 感谢您的关注 - 我已更新文档以反映正确的 API 网址。【参考方案2】:将主机名用作“api.yammer.com”而不是“www.yammer.com”。我认为文档需要更新,我会更新的。
或者,您可以使用 yam.platform.request('users.json')
代替 yam.request('https://api.yammer.com/api/v1/users.json')
,您不必调整主机名。
【讨论】:
api.yammer.com 和 www.yammer.com 被浏览器视为两个不同的域,这可能会解释 CORS 错误消息。 【参考方案3】:将您的应用程序网址添加到 yammer 应用程序基本信息中的“Javascript Origins”。
【讨论】:
我希望这还不算太晚,但是在我的应用程序的基本信息页面中,“Javascript Origins”的设置不存在。我在这里有什么遗漏吗?以上是关于Yammer JavaScript SDK -“访问控制允许来源”问题的主要内容,如果未能解决你的问题,请参考以下文章
Yammer REST API - 如何从不同来源 (CORS) 获取数据?