Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > fetch


Автор: YahоО 24.1.2020, 19:33
Переписываю для себя строчки примеров из developer.mozilla и learn.javascript и результат не обнадеживает :(
Это моя попытка получить данные со стороннего сайта:
Код

async function f(){
 let res = await fetch( 'http://another_site.com', {
    method: 'GET',
    mode: 'no-cors'      
 }); 
 if(res.ok) { 
  let json = await res.json();
  document.body.innerHTML+="<br>"+JSON.stringify(json)+"<br>";
 } else {alert("Error: " + res.status);}
};
f();

В ответах в Chrome видны два запроса к "another_site.com", где
1) для первого запроса: 
 Request Method: GET 
 Status Code: 301 Moved Permanently (from disk cache)
 т.е. запрос ушел и ответ на него не получен еще,
2) а для второго запроса: 
 Request Method: GET 
 Status Code: 200 OK
 т.е. ответ пришел с сервера, но прочитать его в скрипте уже некому, как то так понимаю,
потому что ответ проверяется всего один раз, и как раз для того ответа где 301 и res="".
Данные пришедшие с сервера по второму запросу такие же, как если просто в адресной строке браузера написать  http://another_site.com, т.е. текст то правильный во 2 ответе получаемого с сервера.
Ответ приходит, на как его взять? И почему из браузера отправляется два запроса на сторонний сервер, если функция выполняется один раз?  (два запроса показывает Chrome)

Автор: _zorn_ 25.1.2020, 11:34
Status Code: 301 Moved Permanently (from disk cache)
В заголове Location новое местоположение. Соответственно делаем второй запрос.

Наверное редирект с http на https

Автор: YahоО 25.1.2020, 12:28
Нет, адрес без s :  
http://...
редиректа как бы и нету, скорее всего это Network в Chrome это так отображает, т.к. запрос асинхронный, и есть await, все по отдельности smile

И раньше так бы все и работало, пока не появился cors, 
т.е. сегодняшний mode: 'no-cors' не спасает ситуацию, он не разрешает получать string из даже пришедшего с сервера в браузер ответа на запрос.
Если так, то почему developer.mozilla и learn.javascript не напишут на своих сайтах об этом, т.е. что 'no-cors' сегодня это туфта?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)