【发布时间】:2023-03-20 13:19:01
【问题描述】:
我向 microsoft login 发出 HTTP POST 请求以获取与邮件 API 一起使用的访问令牌,请求成功,但代码转到我代码的错误子句。
requestAccessToken(code: string)
{
console.log("request access token");
if (code) {
var headers = new Headers();
headers.append("Content-Type", 'application/x-www-form-urlencoded');
headers.append('Accept', 'application/json');
var requestoptions = new RequestOptions({
headers: headers
});
var body = `grant_type=authorization_code&
redirect_uri=http://localhost:4200&
code=`+ code + `&
client_id=4e[................]5ab&
client_secret=CE[..............]BC`;
this.http.post("https://login.microsoftonline.com/common/oauth2/v2.0/token", body, requestoptions).map((res: Response) =>
{
console.log("response given");
const data = res.json();
}).subscribe( (data) => {
console.log("The data is = " + data);
}, error => {
console.log("The error is = " + error)
});
}
浏览器控制台显示如下: XMLHttpRequest 无法加载 https://login.microsoftonline.com/common/oauth2/v2.0/token。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:4200' 不允许访问。 zone.js:2019 XHR 加载失败:POST "https://login.microsoftonline.com/common/oauth2/v2.0/token"。 outlook.service.ts:96 错误是 = 响应状态:0 对于 URL:null
并且响应显示我的访问令牌。那么为什么我不能从代码中得到它呢?为什么它会出现错误子句。
【问题讨论】:
-
这是一个 CORS 问题
-
你知道这个数字了吗?我在尝试从login.microsoftonline.com/[tenant_id]/oauth2/token获取访问令牌时遇到了同样的错误
-
@hngdev 不。我们不得不强迫用户手动做一些事情。这是因为 CORS 的东西是真正的 PITA
标签: javascript angular typescript http cors