如何使用凭证创建对集群上 roxie 查询的 JSON 请求?

问题描述 投票:0回答:1

我当前正在使用 HPCC 集群,它具有登录凭据。在创建 json 请求时,为了从 roxie 查询获取响应,我们将被重定向到登录页面。如何使用我的凭据并使用 javascript 创建请求来获取响应?

<script>
document.getElementById('loginForm').addEventListener('submit', function(event) {
  event.preventDefault();

  var username = 'username';
  var password = 'password';

  login(username, password)
    .then(() => {
      document.getElementById('output').innerHTML = '<p>Login successful.</p>';
      window.location.href = 'http://cluster_abc:8002/esp/files/Login.html';
    })
    .catch(error => {
      console.error('Error:', error);
      document.getElementById('output').innerHTML = '<p>Login failed. Please try again.</p>';
    });
});

function login(username, password) {
  return new Promise((resolve, reject) => {
    var loginUrl = 'http://university-roxie.us-hpccsystems-dev.azure.lnrsg.io:8002/esp/login';
    var formData = new FormData();
    formData.append('username', username);
    formData.append('password', password);

    fetch(loginUrl, {
      method: 'POST',
      body: formData
    })
      .then(response => {
        if (!response.ok) {
          throw new Error('Login failed');
        }
        resolve();
      })
      .catch(error => {
        reject(error);
      });
  });
}
</script>

上述代码的输出如下: enter image description here

当我在无 CORS 模式下使用它时,我收到以下登录失败错误: enter image description here

javascript hpcc-ecl hpcc
1个回答
0
投票

实现此目的的一种方法是向所需的 API 提交请求并包含基本授权标头。例如,获取给定工作单元 ID 的 WUInfo:

const headers = new Headers();
headers.set("Authorization", `Basic ${btoa("username:password")}`);
headers.set("Content-Type", "application/json");

fetch("https://clustername:8010/WsWorkunits/WUInfo", {
    method:'POST',
    headers: headers,
    body: JSON.stringify({
        WUInfoRequest: {
            Wuid: "W20240430-130438"
        }
    })
})
.then(async (response) => {
    const json = await response.json();
    console.log(json);
})
.catch(err => console.error(err));

您可以查看 https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#headers 了解有关 Fetch、标头等的更多信息。

您可能还想查看 HPCC-JS 库 (https://github.com/hpcc-systems/visualization)。 comms 包中有一些机制用于与集群通信、查询 WU 等。

© www.soinside.com 2019 - 2024. All rights reserved.