Конечная точка Spring Boot возвращает 404 только на рабочем сервере, отлично работает на локальном хостеJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Конечная точка Spring Boot возвращает 404 только на рабочем сервере, отлично работает на локальном хосте

Сообщение Anonymous »

Я запускаю приложение Spring Boot с Spring Security на своем рабочем сервере и сталкиваюсь с ошибкой 404 Not Found при доступе к определенным конечным точкам, которые отлично работают в моей локальной среде.
Проблема:
Когда я делаю запрос к https://api.example.com/user-profile/auth-data из моего интерфейса (и даже от Postman) я получаю следующий ответ:

Код: Выделить всё

{
"timestamp": "2024-10-29T15:56:39.325+00:00",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/user-profile/auth-data"
}
Однако на моем локальном компьютере тот же код и конечная точка работают без проблем. Я использую JWT для аутентификации и уже настроил CORS и CSRF в настройках Spring Security.
Детали конфигурации:
Вот мой класс SecurityConfiguration:

Код: Выделить всё

@Configuration
@EnableWebSecurity
@EnableMethodSecurity
@AllArgsConstructor
@SpringBootApplication(scanBasePackages = {"com.dynamicquotation.dq"})
public class SecurityConfiguration implements WebMvcConfigurer {
private final JwtFilter jwtFilter;
private final DataSource dataSource;

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.cors(cors -> cors.configurationSource(request -> {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(List.of("https://example.com", "https://accounts.google.com"));
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
configuration.setAllowedHeaders(List.of("*"));
configuration.setExposedHeaders(List.of("Authorization"));
configuration.setAllowCredentials(true);
return configuration;
}))
.csrf(AbstractHttpConfigurer::disable);

http.sessionManagement(sess -> sess.sessionAuthenticationStrategy(sessionAuthenticationStrategy()));

// Authorization
http.authorizeHttpRequests(auth ->
auth
.requestMatchers("/auth/login", "/auth/is-token-valid", "/logout", "/contact", "/quotation/single-quotation/**").permitAll()
.anyRequest().authenticated()
);

http.oauth2Login(Customizer.withDefaults());
http.httpBasic(withDefaults());

// logout
http.logout(l -> l
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.clearAuthentication(true)
.deleteCookies("JSESSIONID")
.invalidateHttpSession(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessHandler((request, response, authentication) -> response.setStatus(HttpServletResponse.SC_OK))
.addLogoutHandler((request, response, authentication) -> {
// Additional logout handler
}).permitAll());

http.addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class);

return http.build();
}
...
Конфигурация Nginx:
Я также использую Nginx в качестве обратного прокси со следующей конфигурацией:

Код: Выделить всё

server {
listen 443 ssl;
server_name api.example.com;

ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Снимок экрана вкладки «Сеть»:
На следующем снимке экрана с вкладки «Сеть» браузера вы видите ошибку 404 ошибки на конкретных конечных точках (

Код: Выделить всё

auth-data
, pending-quotations и т. д.), в то время как другие, такие как is-token-valid, работают нормально.
Изображение

Код: Выделить всё

is-token-valid
разрешено, но другие конечные точки, такие как auth-data, не разрешены, поскольку сначала пользователь должен пройти аутентификацию. В браузере я вхожу в систему через OAuth (Google) и получаю токен cookie и JSESSIONID.
Вопрос:
Что может быть причиной ошибки 404 только на рабочем сервере, несмотря на то, что конечная точка работает локально? Может ли быть какая-либо проблема с конфигурацией или средой, которую я упускаю из виду?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -on-localh
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»