ReactJS пытается получить доступ к данным JSON из REST API из JIRA, но не может этого сделать. - PullRequest
0 голосов
/ 12 сентября 2018

Я застрял на несколько часов, пытаясь выяснить, почему я не могу получить доступ и передать данные в моем массиве из данных JSON в JIRA с помощью API REST.Короче говоря, с помощью базовой аутентификации, предоставленной документацией JIRA REST API, найденной здесь: https://developer.atlassian.com/server/jira/platform/basic-authentication/, я пытаюсь получить данные JSON на веб-сайте JIRA через URL.В журнале консоли моей страницы localhost я получаю следующее сообщение об ошибке: Блокировка перекрестного чтения (CORB) заблокировала ответ перекрестного источника .Не очень уверен, как решить эту проблему, данные в моем массиве пустые (пытается получить все данные JSON в этом массиве, но не работает).Я не уверен, что я получал данные полностью на основе формата, который я искал через Интернет в методе componentDidMount () .

Любая помощь приветствуется.

const base64 = require('base-64');

constructor(props)
{
   super(props);
   isLoaded: false,
   jiraData: []
}

componentDidMount()
{
   let headers = new Headers();
   headers.append("Content-Type", "application/json");
   headers.append("Accept", "application/json");
   headers.append('Authorization', 'Basic ' + 
   base64.encode('hiddenusername:hiddenpassword'));

   fetch('http://ksr-ca-qmaltjira.ca.kronos.com:8061/rest/api/2/search?jql=project=SUP&maxResults=2', {method:'GET', headers: headers})
   .then(res => res.json())
   .then(res => {
      this.setState(
      {
        isLoaded: true,
        tableHeight: height + "px",
        jiraData: res
      });

    });

}


render()
{
  var { isLoaded, jiraData } = this.state;
  //Checking whether there is data in my array 
  const emptyOrNot = !!jiraData.length && !!jiraData.length ? <p>not empty</p> : <p>empty</p>
}

return(
 <div className="App">
 {emptyOrNot}
 </div>
)

1 Ответ

0 голосов
/ 12 сентября 2018

Пожалуйста, , прочитайте о CORS в других ответах , чтобы получить пояснения по этому вопросу.По сути, вы не можете отправлять запросы с веб-страницы на сервер с другим источником, если только вы не настроили ее для разрешения запросов с несколькими источниками.А поскольку у вас нет контроля над Jira, вы не можете этого сделать.

Более того, даже если вы могли бы сделать это, я настоятельно рекомендую против этого, потому что вы выставляете свое имя пользователяи пароль для любого, кто посещает вашу веб-страницу.

Правильный способ создать это - создать собственный API, который может общаться с Jira без необходимости решать проблему CORS (CORS применяется только к запросам, поступающим избраузер).Затем вы можете обслуживать свое приложение React отсюда или включить CORS и обслуживать приложение React откуда угодно.Это также защищает ваши учетные данные Jira, поскольку они не будут отображаться в клиентском приложении.

...