Axios, fetch () устанавливает заголовки запроса в заголовки Access-Control-Request-He вместо отдельных заголовков - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь сделать запрос GET с некоторыми пользовательскими заголовками из приложения реагирования.

Это код для перехватчика axios:

addCaptchaHeaders(captcha, sgn, exp) {
    // remove the old captcha headers
    if (this.captchaHeadersInterceptor !== undefined) {
      this.removeCaptchaHeader();
    }
    // Sign new captcha headers
    this.captchaHeadersInterceptor = this.httpClient.interceptors.request.use(
      config => {
        // Add headers here
        config.headers.common._captcha = captcha;
        config.headers.common._sgn = sgn;
        config.headers.common._exp = exp;
        return config;
      },
      error => {
        // Do something with request error
        return Promise.reject(error);
      }
    );
  }

Это заголовки ответа для предварительного запроса:

Access-Control-Allow-Headers: origin, content-type, accept, authorization, _captcha, _sgn, _exp
Content-Length: 0
Server: Jetty(9.3.24.v20180605)

Это заголовки запроса для предварительного запроса:

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,sl;q=0.8
Access-Control-Request-Headers: _captcha,_exp,_sgn
Access-Control-Request-Method: GET
Connection: keep-alive
Host: localhost:8086
Origin: http://localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36

Заголовки для фактического запроса после предполетного совпадают. Так что Access-Control-Request-Headers: _captcha,_exp,_sgn вместо пользовательских заголовков запроса.

Думая, что это была проблема с настройкой axios, я сделал тот же запрос, используя fetch:

fetch(
      "http://localhost:8086/podatki/parcela/search?parcela=1727&count=50&offset=0",
      {
        method: "GET",
        headers: {
          _captcha: res,
          _sgn: sgn,
          _exp: exp
        }
      }
    );

Результат тот же.

Это проблема связи между браузером и сервером? Если да, то чего не хватает в заголовках ответов?

Выполнение одного и того же запроса с почтальоном.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Заголовки ответа для предварительной проверки, как показано в вопросе, указывают, что сервер не отправляет ответный заголовок Access-Control-Allow-Methods.

Чтобы браузер считал предполёт успешным, ему необходимо, чтобы ответ сервера включал как Access-Control-Allow-Headers, так и Access-Control-Allow-Methods заголовки ответа.

0 голосов
/ 14 сентября 2018

Где вы проверяете заголовки? Инструменты разработчика Chrome действительно отображают их так, но только тогда, когда запрос не загружается (из-за отсутствия заголовка «Access-Control-Allow-Origin» - в этом случае происходит сбой, даже если сервер возвращает 200 - или по любой другой причине )

...