【问题标题】:Yammer JavaScript SDK - 'Access-Control-Allow-Origin' issueYammer JavaScript SDK -“访问控制允许来源”问题
【发布时间】: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,我都会收到错误消息

标签: javascript ajax rest cors yammer


【解决方案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”的设置不存在。我在这里有什么遗漏吗?
猜你喜欢
  • 2020-10-16
  • 2013-11-15
  • 2023-04-01
  • 2015-12-26
  • 2016-05-07
  • 1970-01-01
  • 2021-09-07
相关资源
最近更新 更多