我想连接到使用令牌承载的REST API。我尝试了下面的JS代码:
sessionStorage.setItem('MCToken',
JSON.stringify('123456')
);
let datastructuresAPI = () => {
let token = JSON.parse(sessionStorage.getItem('MCToken'));
let header = new Headers({
'Cache-Control': 'no-cache',
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
});
let response = fetch('https://mon_url',{
method: 'POST',
headers: header,
body:JSON.stringify({
"methodName":"connect",
'grant_type': 'client_credentials',
"serviceName":"ConnectionService"
}),
'x-frame': 'same-origin',
mode: 'no-cors'
});
console.log(response)
}
datastructuresAPI();
字符串
但我无法连接,我有这些消息(第一个是console.log
的结果)
的数据
的
2条答案
按热度按时间whhtz7ly1#
使用a few exceptions,在跨域 AJAX 请求上设置头需要通过CORS获得权限。
因为你设置了
mode: 'no-cors'
,所以你告诉浏览器在尝试任何需要通过CORS权限的操作时“默默地”失败。因此,不设置
Authorization
报头,并且Content-Type
默认为text/plain
。服务器随后发出401响应,因为可能缺少
Authorization
头。*不要设置
mode: 'no-cors'
*请将服务器配置为使用CORS授予权限或从您自己的服务器端代码向服务器发出请求,而不是直接从浏览器发出请求。
zpgglvta2#
Fetch函数是一个异步函数,你应该等待它。
字符串
对于另一个结果(401),您确定您的REST API等待带有Bearer {token}的token吗?只能是{token}。