Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试发布邮件时出现CORS错误_Javascript_Angularjs_Rest_Yammer - Fatal编程技术网

Javascript 尝试发布邮件时出现CORS错误

Javascript 尝试发布邮件时出现CORS错误,javascript,angularjs,rest,yammer,Javascript,Angularjs,Rest,Yammer,我有一个AngularJS应用程序,我正试图通过它发布消息。我成功地让用户登录,获得访问令牌,并确保我的域位于Yammer中的JavaScript源代码中 但是,每当我尝试发布消息时,都会出现以下错误: 奇怪的是,当它进行预飞行时,它看起来是正常的,但正如错误所述,我无法理解为什么它没有返回到CORS头中,因为我已经在Yammer客户端区域中注册了它 以下是投寄代码: $scope.YammerPost = function (Yammer) { var _token

我有一个AngularJS应用程序,我正试图通过它发布消息。我成功地让用户登录,获得访问令牌,并确保我的域位于Yammer中的JavaScript源代码中

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

奇怪的是,当它进行预飞行时,它看起来是正常的,但正如错误所述,我无法理解为什么它没有返回到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);
    }
我通过单击按钮调用视图中的scope变量

以下是我用于登录用户的逻辑:

    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);
                      }
                  });
              }
          }
        );
    }

我最终发现了这个问题

出于某种奇怪的原因,每次我尝试使用$http post时,它都会包含来自AD的身份验证令牌(使用Azure AD进行身份验证的应用程序)

最后,我在单击按钮时在Angular scope函数中使用了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);
                }
            });
$.ajax({
网址:'https://api.yammer.com/api/v1/messages.json',
键入:“post”,
数据:{
body:'这是一个使用AngularJS的jQuery测试',
组id:
},
标题:{
“授权”:
},
数据类型:“json”,
成功:功能(数据){
控制台信息(数据);
}
});
修正了这个问题,我现在可以发布了


如果有人发现这种做法有任何问题,请让我知道,angular还是有点新的

您能给我们看看代码吗?还有,这是什么浏览器?我知道IE的行为不同。使用fiddler查看实际标题。如果在Linux上,请使用wireshark。我添加了用于登录用户的代码,以及用于发布评论的代码。您是否在yammer的javascript源代码中添加了localhost?不完全确定这是否可行,你能与另一个域(不是本地主机)进行双重检查吗?据我所知,我用于AD身份验证的adal.js库似乎正在传递一个授权令牌,由于某种奇怪的原因,它没有被我上面的逻辑覆盖。。。不知道为什么我不让我覆盖它。