axios response.data всегда пуст, но почтальон работает - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь создать расширение, которое открывает битый URL и извлекает заголовок:

http://bit[dot]ly/30YbIyD

Почтальон выполняет перенаправления и получает полученный документ для меня.

Когда яПопробуйте с Axios, я получаю пустые данные ответа, хотя перенаправление, кажется, происходит.

Первый запрос получает 301, указывающий на "stackoverflow.com". В этом запросе мы получаем «200 УСПЕХ», но часть данных пуста.

axios({
    'url': 'http://bit[dot]ly/30YbIyD',
    method: 'get',
    maxRedirects: 5,
    headers: {
      'Content-Type': 'text/html',
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Methods': 'GET',
    },
    withCredentials: true,
  })
  .then((res) => {
    console.log("Response", res)
  })
  .catch((err) => {
    console.log("Error with fetch: ", err)
  });

Нет сообщений об ошибках, но я ожидал увидетьтот же результат, что и Почтальон;окончательный документ.

Я также получаю следующие предупреждения в консоли браузера:

Cross-Origin Read Blocking (CORB) blocked cross-origin response <URL> with MIME type text/html. See <URL> for more details.

и

Файл cookie, связанный смежсайтовый ресурс на http://bit.ly/ был установлен без атрибута SameSite. В будущих версиях Chrome файлы cookie с межсайтовыми запросами будут доставляться только в том случае, если для них установлены значения SameSite=None и Secure. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе «Приложения»> «Хранилище»> «Файлы cookie» и просмотреть более подробную информацию по https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.

Вот заголовки, которые отправляет почтальон: https://imgur.com/765Cz30

1 Ответ

0 голосов
/ 09 октября 2019

Используйте следующий шаг:
1. Вызовите http://bit[dot]ly/30YbIyD с помощью Axios.
2. Найдите местоположение из заголовка ответа. ( доступ к заголовку ответа через Axios )
3. Вызовите URL-адрес, указанный в расположении, чтобы получить актуальный контент.

*** Браузер и почтальон выполняют несколько запросов для получениясодержание. Я использовал вышеупомянутые шаги в своем приложении Java. Ниже код для справки

if ( HttpStatus.SC_MOVED_TEMPORARILY  == statusCode ) {
            location = method.getResponseHeader("Location").getValue();
            if (sLog.isDebugEnabled()) {
                sLog.debug("location: " + location);
            }                                                                  
}
...