【发布时间】:2017-12-18 03:36:56
【问题描述】:
我正在使用this part of the Outlook API。它说您应该能够进行发布请求,但是当我尝试时出现以下错误:
Failed to load https://login.microsoftonline.com/common/oauth2/v2.0/token: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3003' is therefore not allowed access. The response had HTTP status code 400.
我该如何解决这个问题?我显然无权访问 Outlook 的服务器,但考虑到 这就是文档中所说的内容,他们肯定会让我发帖请求!。
如果有帮助,这是我的代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
let url = new URL(window.location);
let code = url.searchParams.get('code');
let redirect = 'http%3A%2F%2Flocalhost%3A3003%2Fauth-process-token.html';
let clientId = '<MY ID>';
let clientSecret = '<MY KEY>';
var req_string = 'grant_type=authorization_code&code=' + code + '&redirect_uri=' + redirect + '&client_id=' + clientId + '&client_secret=' + clientSecret;
$.ajax({
type: 'POST',
url: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
crossDomain: true,
data: req_string,
dataType: 'application/x-www-form-urlencoded',
success: function (responseData, textStatus, jqXHR) {
var value = responseData.someKey;
},
error: function (responseData, textStatus, errorThrown) {
console.log('POST failed.', errorThrown);
}
});
</script>
编辑:我修复了“错误请求”错误,但它仍然给了我另一个错误。
【问题讨论】:
-
一种解决方法是在您的 chrome 浏览器中使用 CORS 过滤器。只是让事情正常进行的替代方案。 chrome.google.com/webstore/detail/cors-toggle/…
-
问题是,您正在发出 错误请求 (400) - 也许 MS 不会向糟糕的 API 实施者发出 CORS 标头
-
也许您没有正确执行前面的步骤
-
这是 Oauth2 授权类型“授权码”。响应将仅发送回客户端配置中指定的回调 url 或重定向 url。您的 ajax 调用可能没有收到回复。
-
尝试适用于 SPA 的 oauth2“隐式流”。文档是:docs.microsoft.com/en-us/azure/active-directory/develop/…
标签: javascript jquery ajax http-post outlook-api