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