Аксиос в сапере запрашивает дважды? - PullRequest
0 голосов
/ 30 октября 2019

Я использую axios для отправки запроса внутри и снаружи preload. Но я не понимаю, что по какой-то причине мой бэкэнд жалуется, что JWT должен быть предоставлен. Я использую тот же самый бэкэнд с другим интерфейсом (Svelte только с Axios) и не жалуюсь. Но в Sapper, когда я запрашиваю с axios с учетными данными (да с ними). Я получаю, что необходимо предоставить jwt.

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

<script context="module">

  import axios from 'axios'

  const ax = axios.create({
    withCredentials: true,
    baseURL: 'http://localhost:7000',
    headers: { 'Content-Type': 'application/json' },
  })

  export async function preload (page) {
    const {data} = await ax.get(`/profile/${page.query.type}`)
    let profiles = data
    return { profiles, page }
  }

</script>

1 Ответ

0 голосов
/ 06 ноября 2019

У меня были похожие проблемы ( вне предзагрузки ), и моя проблема заключалась в том, что код на стороне сервера Sappers отправлял первый запрос, а код на стороне клиента Sappers отправлял второй запрос ( это потому, что Sapper имеетрендеринг на стороне сервера, если я правильно понимаю, и Sapper запускает ваш код тоже перед отправкой его в браузер, где он запускается второй раз ).

Можете ли вы добавить оператор if, который проверяет if (process.browser) { [...] } (или существование window или какой-либо другой исключающей браузер переменной) до запроса axios?

Серверный код, очевидно, не будет иметь доступа к файлам cookie или localStorage из браузера пользователя, поэтому JWT будет пустым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...