Не удается отправить запрос POST на сервер Spring Resource

У меня есть Spring Boot ResourceServer и клиентское приложение React. Я пытаюсь отправить POST запрос на одну из конечных точек сервера (кстати, с аннотацией @CrossOrigin), однако в консоли появляется эта ошибка:

Доступ к XMLHttpRequest по адресу 'http://localhost:8080/api/search' из источника 'http://localhost:3000 'заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: он не имеет статуса HTTP ok.

Предварительный запрос возвращает статус Http 401, и я не знаю почему.

Заголовки ответа на предпечатный запрос выглядят следующим образом:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Methods: POST
Access-Control-Allow-Origin: http://localhost:3000
Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Length: 0
Date: Sun, 20 Oct 2019 17:23:54 GMT
Expires: 0
Pragma: no-cache
Vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
WWW-Authenticate: Basic realm="Realm"
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block

Заголовки моих предполетных запросов выглядят так:

Access-Control-Request-Headers: content-type
Access-Control-Request-Method: POST
Origin: http://localhost:3000
Referer: http://localhost:3000/movie-search
Sec-Fetch-Mode: no-cors
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36

Я использую Axios для отправки запроса (если это имеет значение). Кто-нибудь знает, что здесь происходит?


person J. Loe    schedule 20.10.2019    source источник
comment
Ответ об ошибке 401 кажется, что вы неправильно применили механизм аутентификации. Ваш запрос должен содержать такой заголовок авторизации: Authorization: Bearer <token>   -  person Toan Quoc Ho    schedule 20.10.2019


Ответы (1)


Упс ... моя конфигурация HTTPSecurity выглядела так:

http
    .authorizeRequests()
    .antMatchers(HTTPMethod.POST, "/api/search").permitAll()
    .anyRequest().authenticated()
    .and().httpBasic()

вместо этого:

http
    .authorizeRequests()
    .antMatchers("/api/search").permitAll()
    .anyRequest().authenticated()
    .and().httpBasic()
person J. Loe    schedule 20.10.2019