Angular 5 + HttpClient не отправляет заголовки на GET - PullRequest
0 голосов
/ 29 апреля 2018

Я использую Angular 5 https://angular.io/api/common/http/HttpClient#get[1] для выполнения HTTP-запроса GET, для которого требуется заголовок авторизации.

Может кто-то указать проблему в этом коде? Спасибо.

this.http.get<Company[]>('http://localhost:8080/api/company/list',
      {
        headers:
          {'Authorization': 'Bearer 56155553-87f8-47f3-be87-8a4acf4ccacf'}
      })
      .subscribe(companies => {
        this.companies = companies;
        // Calling the DT trigger to manually render the table
        this.dtTrigger.next();
      });

Я получаю следующую ошибку, которая, как я подозреваю, неправильно проходит заголовки.

XMLHttpRequest cannot load http://localhost:8080/api/company/list. Response for preflight has invalid HTTP status code 401

К вашему сведению: нет проблем с токеном Bearer, а также с конфигурациями CORS.

На стороне сервера я использовал Spring Boot. Ниже приведена конфигурация CORS, которую я добавил.

@Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, Authorization, X-Custom-Header");

        chain.doFilter(req, res);
    } 

1 Ответ

0 голосов
/ 29 апреля 2018

Браузер отправляет запрос OPTIONS, чтобы запросить разрешение на выполнение запроса с пользовательскими заголовками HTTP (т.е. заголовком авторизации).

Сервер отвечает с ошибкой 401 (не авторизована).

Вы должны исключить запрос OPTIONS из требования для авторизации.

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