Ответ
Код состояния HTTP 403 Forbidden указывает, что сервер понял запрос, но отказывается его авторизовать. В отличие от 401 Unauthorized (требуется аутентификация), здесь клиент аутентифицирован, но его прав недостаточно для доступа к ресурсу.
Типичные причины:
- У пользователя нет необходимой роли или разрешения (например, доступ к админ-панели для роли
USER). - Запрет доступа для определенного IP-адреса или диапазона.
- Попытка доступа к системным файлам (например, в каталоге
/WEB-INF/или.htaccess). - Неправильная конфигурация прав на файловой системе веб-сервера.
Пример обработки в Spring Security:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/admin/**").hasRole("ADMIN") // Только ADMIN
.antMatchers("/api/user/**").hasAnyRole("USER", "ADMIN")
.anyRequest().authenticated()
.and()
.exceptionHandling()
.accessDeniedHandler((request, response, accessDeniedException) -> {
// Кастомная логика обработки 403
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.getWriter().write("Access Denied: Insufficient privileges");
});
}
}
Что делать при получении 403? Проверить корректность учетных данных, наличие необходимых прав и конфигурацию сервера.