Вход в локальный Splunk с помощью React и Axios - PullRequest
0 голосов
/ 06 ноября 2018

Используя Splunk 7.2, с почтальоном мне удается получить идентификатор сессии из Splunk через localhost: 8089 / services / auth / login используя метод POST с телом www urlencoded (имя пользователя, пароль)

С помощью axios мне удается получить ошибку 400 Bad request

  login = (event) => {
    const url = '/services/auth/login?output_mode=json';
    const requestBody = {
      username: 'admin',
      password: 'admin'
    };
    const config = {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    };

    axios.post(url, requestBody, config)
      .then((result) => {
        console.log(result)
      })
      .catch((err) => {
        console.log(err)
      })
  };

Я решил проблему с CORS, добавив следующее в server.conf в / etc / system / local

[httpServer]
crossOriginSharingPolicy = http://localhost:3000

И через прокси на 8089, используя package.json:

"proxy": "https://localhost:8089",

Кроме того, я не могу сделать простой запрос:

axios({
  method: 'get',
  url: url,
  headers: {'Content-Type': 'application/x-www-form-urlencoded'},
  auth: {
    user: 'admin',
    password: 'admin',
  },
})

Я получаю 401 несанкционированный.

EDIT:

Я могу заставить запрос abov работать, используя идентификатор сеанса, который я получаю с почтальоном:

const url = '/services/apps/local?output_mode=json';
axios({
  method: 'get',
  url: url,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': 'Splunk mysessionid'
  }
})

EDIT2:

Я могу заставить логин работать с простым XHR

  login2 = (event) => {
    var url = "/services/auth/login?output_mode=json";
    var params = "username=admin&password=admin";
    var xhr = new XMLHttpRequest();
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.send(params);
  };

Так что, думаю, проблема в том, что я использую Axios

...