尝试发布消息时出现CORS错误

时间:2015-11-19 14:50:02

标签: javascript angularjs rest yammer

我有一个AngularJS应用程序我试图发布消息。我成功地能够登录用户,获取访问令牌,并确保我在Yammer的JavaScript起源中拥有自己的域名。

但是,每当我尝试发布消息时,都会收到以下错误:

Image of console error

奇怪的是当它执行预检时似乎没问题,但是由于错误状态我无法弄清楚为什么它没有回到CORS标题中,因为我已经在Yammer客户端区域注册了。

以下是发布的代码:

    $scope.YammerPost = function (Yammer) {
        var _token = Yammer.access_token.token;
        var config = {
            headers: {
                'Authorization': 'Bearer ' + _token
            }
        };
        $http.post('https://api.yammer.com/api/v1/messages.json', { body: 'blah blah', group_id: XXXXXXX }, config);
    }

我通过点击按钮在视图中调用该范围变量。

以下是我用来签署用户的逻辑:

    function checkYammerLogin() {
        $scope.Yammer = {};
        yam.getLoginStatus(
          function (response) {
              if (response.authResponse) {
                  $scope.Yammer = response;
                  console.dir(response); //print user information to the console
              }
              else {
                  yam.platform.login(function (response) {
                      if (response.authResponse) {
                          $scope.Yammer = response;
                          console.dir(response);
                      }
                  });
              }
          }
        );
    }

1 个答案:

答案 0 :(得分:0)

我最终找到了问题。

由于某些奇怪的原因,每次我尝试使用$ http帖子时,它都会包含来自AD的Auth令牌(使用Azure AD进行身份验证的应用)。

我最终在单击按钮时在我的Angular范围函数中使用了jQuery,它可以控制请求的标题。

$.ajax({
                url: 'https://api.yammer.com/api/v1/messages.json',
                type: 'post',
                data: {
                    body: 'this is a test from jQuery using AngularJS',
                    group_id: <group_id>
                },
                headers: {
                    'Authorization': _token
                },
                dataType: 'json',
                success: function (data) {
                    console.info(data);
                }
            });

修正了问题,我现在可以发帖了。

如果有人发现这种做法存在任何问题,请告诉我,对于角色

仍然有点新意