Не удается отправить POST-запрос на сервер Spring Resource - PullRequest
0 голосов
/ 20 октября 2019

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

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

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

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

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 для отправки запроса (если это имеет значение). Кто-нибудь знает, что здесь происходит?

1 Ответ

0 голосов
/ 20 октября 2019

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

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

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

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