fetch (или AJAX Get) возвращает html, но Postman возвращает xml из feedburner - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь получить подкаст-фид XML в своем приложении. У меня проблема с тем, что один из fetch запросов, которые я делаю, возвращает HTML-документ вместо XML-канала. Странная часть: если я отправлю /GET на тот же URL, что и Почтальон, он вернет мне RSS-канал Он также работает с фрагментом кода здесь на SO (пример ниже).

Пример возврата html-документа можно увидеть на этой скрипке , которая имеет тот же код, что и фрагмент ниже.

Кто-нибудь может помочь мне понять, почему это происходит, пожалуйста? Я кормлю, как это можно решить, установив какой-то заголовок запроса, может быть?

Обновление Странно, но похоже, что связанная скрипка иногда извлекает XML; Я думаю, потому что он кеширует звонки. Если вы откроете его в новом окне инкогнито, он снова получит html.

$('#fetchXML').click(function(){
  	$('#xmlContent').text('Loading ...');

	const feedUrl = 'https://cors-anywhere.herokuapp.com/http://feeds.wnyc.org/dearhankandjohn';
  const headers = new Headers({
  	'X-Requested-With':'XMLHttpRequest'
  });
  
  
  fetch(feedUrl, headers)
  .then(function(response) {
    return response.text();
  })
  .then(function(xmlText) {
  	$('#xmlContent').text(xmlText);
  })
  .catch(function(err){
  	$('#xmlContent').text(err);
  });
	
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
  <td><button id="fetchXML">
  Fetch Feed
  </button></td>
</tr>
<tr>
  <td id="xmlContent"></td>
</tr>
</table>

1 Ответ

1 голос
/ 20 мая 2019

Хорошо, так что я наконец-то смог это исправить, установив ReferrerPolicy в no-referrer в вызове fetch(). Я не уверен на 100%, почему это работает, за исключением того, что это специфическая вещь, когда у них есть политика условного возврата, основанная на типе реферера.

...