Ответ
Код состояния HTTP 401 Unauthorized означает, что запрос не был применён, поскольку ему не хватает действительных учётных данных для целевого ресурса.
Техническая суть:
- Сервер требует аутентификации, но клиент либо не предоставил данные, либо предоставил неверные/истёкшие.
- Ответ должен включать заголовок
WWW-Authenticate, содержащий информацию о том, какую схему аутентификации использовать.
Пример на Java с использованием HttpURLConnection:
import java.net.HttpURLConnection;
import java.net.URL;
public class Example {
public static void main(String[] args) throws Exception {
URL url = new URL("https://api.example.com/protected");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
// Передача недействительного токена
connection.setRequestProperty("Authorization", "Bearer invalid_token");
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED) { // 401
System.out.println("Ошибка 401: Неавторизованный доступ. Требуются действительные учётные данные.");
// Заголовок WWW-Authenticate подскажет схему (например, Bearer, Basic)
String authHeader = connection.getHeaderField("WWW-Authenticate");
System.out.println("Сервер ожидает: " + authHeader);
}
connection.disconnect();
}
}
Как исправить: Клиент должен отправить корректные учётные данные в соответствии со схемой, указанной сервером в WWW-Authenticate (например, валидный токен OAuth 2.0 или правильные логин/пароль для Basic Auth).