Добавление нескольких заголовков к клиенту graphql (apollo-boost) - PullRequest
0 голосов
/ 18 марта 2020
  const client = new ApolloClient({
    uri,
    onError: (e: any) => {
      console.log('error: ', e); // Failed to fetch
      console.log(e.operation.getContext()); // it does show it has x-abc-id
    },

    request: operation => {
      const headers: { [x: string]: string } = {};
      const accessToken = AuthService.getUser()?.accessToken;
      const activeClientId = UserService.getActiveClientId();
      headers['x-abc-id'] = activeClientId;
      if (accessToken) headers['Authorization'] = `Bearer ${accessToken}`;
      operation.setContext({ headers });
    }

});

Проблема в том, что когда я просто добавляю заголовок Авторизация , он выполняет вызов POST и показывает ожидаемую ошибку.

Но когда я добавляю x-ab c -id заголовок, который также ожидается от бэкэнда, он вызывает только вызов OPTIONS (без почтового вызова)

PS При добавлении обоих заголовков почтальон работает полностью нормально.

1 Ответ

0 голосов
/ 19 марта 2020

Нашел, в чем проблема, подумал поделиться, если поможет.

Почтальон не выполняет вызов OPTIONS перед отправкой запроса в бэкэнд.

В вызове OPTIONS ? представляет , что содержит клиентский вызов: [authorization, content-type , x-ab c -id] enter image description here

НО что ожидает сервер: ? enter image description here

Просто авторизация, тип контента Так что это несоответствие заголовков вызовов (ничего не связанного с Apollo).

x-ab c -id заголовок явно должен быть разрешен в конфигурации CORS на бэкэнде.

Благодаря Pooria Atarzadeh

...