我有一个使用axios
库来处理请求的 React 应用程序。所以接下来的帖子:
如何使用 OAuth2 和 microsoft login 和 HTTP 请求使用用户名/密码登录
我可以在 Postman 上执行操作。
然后我设置了 axios 库来执行 POST
const dataForBody = `${'grant_type=password&' +
'username='}${encodeURI(userName)}&` +
`password=${encodeURI(userPassword)}&` +
`client_id=${encodeURI(clientID)}&` +
`resource=${encodeURI('https://graph.microsoft.com')}&` +
`client_secret=${encodeURI(clientSecret)}`;
const messageHeaders = {
'Content-Type': 'application/x-www-form-urlencoded'
};
axios({
method: 'post',
url: 'https://login.microsoftonline.com/{tenant}/oauth2/token',
headers: messageHeaders,
data: dataForBody,
})
.then((response) => {
});
但我收到以下错误:
跨域请求被阻止:同源策略不允许读取https://login.microsoftonline.com/{tenant}/oauth2/token 上的远程资源 。(原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。
我尝试添加:
'Access-Control-Allow-Origin': 'https://login.microsoftonline.com',
到标题,但它没有用。
所以添加Allow-Control-Allow-Origin: *
chrome 扩展解决了我的问题。
问题是,我的应用程序要发布在 azure 上,所以我在其他网络浏览器上测试了该请求,但没有奏效。所以我不希望我的用户安装扩展。
我的请求有问题吗?为什么邮递员不用设置标题就可以做到?
有没有其他方法可以实现它?
PS:我读过使用adal.js
但我不想使用微软的登录屏幕,因为我知道用户和应用程序的通行证,我想避免手动登录。