javascript 如何使用获取和承载令牌连接到API?

ldioqlga  于 2023-08-02  发布在  Java
关注(0)|答案(2)|浏览(132)

我想连接到使用令牌承载的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的结果)


的数据


whhtz7ly

whhtz7ly1#

使用a few exceptions,在跨域 AJAX 请求上设置头需要通过CORS获得权限。
因为你设置了mode: 'no-cors',所以你告诉浏览器在尝试任何需要通过CORS权限的操作时“默默地”失败。
因此,不设置Authorization报头,并且Content-Type默认为text/plain
服务器随后发出401响应,因为可能缺少Authorization头。

*不要设置mode: 'no-cors'
*将服务器配置为使用CORS授予权限从您自己的服务器端代码向服务器发出请求,而不是直接从浏览器发出请求。

zpgglvta

zpgglvta2#

Fetch函数是一个异步函数,你应该等待它。

fetch(...)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.log(error));

字符串
对于另一个结果(401),您确定您的REST API等待带有Bearer {token}的token吗?只能是{token}。

相关问题