Я использую 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);
}