서버 응답 100 Continue
HTTP 상태 코드 100 (Continue)
HTTP 상태 코드 100 (Continue)는 임시 코드로, 클라이언트가 요청의 초기 부분을 성공적으로 수신했음을 나타내며 클라이언트가 요청 본문을 계속 전송할 수 있음을 의미합니다. 이 코드는 대량의 데이터를 최적화하여 전송할 때 유용할 수 있습니다.
기본 개념
- 상태 코드 100 (Continue)란 무엇인가? - 이 코드는 클라이언트가 요청의 처음 부분을 서버에 성공적으로 전송했음을 알리고, 서버가 요청을 처리할 준비가 되었음을 나타냅니다.
- 언제 그리고 왜 사용되는가? - 클라이언트가 큰 파일이나 데이터 덩어리를 서버로 전송할 때, 서버가 요청을 검토한 후 클라이언트에게 계속 전송하라는 신호를 보냅니다.
실제 사용 예시
예시 1: 큰 파일 전송
클라이언트가 큰 파일을 서버에 업로드할 때, 클라이언트는 처음에 요청의 헤더 정보를 전송합니다. 서버가 이 정보를 검토하고 문제가 없다고 판단하면, 클라이언트에게 상태 코드 100을 반환합니다. 이 경우 클라이언트는 파일의 본문을 계속 전송할 수 있습니다.
이 코드의 장점: 대량의 데이터를 전송하기 전에 서버가 준비 상태임을 확인할 수 있어, 불필요한 데이터 손실을 방지할 수 있습니다.
예시 2: 데이터 전송 전 헤더 확인
클라이언트가 서버에 요청을 보낼 때, 서버는 요청 헤더를 검사하여 요청이 유효한지 확인합니다. 만약 헤더가 예상과 일치하지 않을 경우, 서버는 100 상태 코드를 반환하지 않고, 클라이언트에게 오류를 알립니다. 이로 인해 클라이언트는 불필요한 데이터 전송을 피할 수 있습니다.
상태 코드 100과 관련된 오류 수정 방법
Python 예시
서버가 100 코드를 반환하지 않는 경우, 클라이언트에서 이를 처리하는 방법은 다음과 같습니다. Python의 requests 라이브러리를 사용할 수 있습니다.
import requests
response = requests.post('http://example.com/upload', data=large_file, allow_redirects=False)
if response.status_code == 100:
# 데이터 전송 계속
pass
else:
# 오류 처리
print("서버가 100 코드를 반환하지 않았습니다.")
Java 예시
Java에서는 HttpURLConnection을 사용하여 상태 코드 100을 처리할 수 있습니다. 클라이언트 설정 방법은 다음과 같습니다.
import java.net.HttpURLConnection;
import java.net.URL;
URL url = new URL("http://example.com/upload");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_CONTINUE) {
// 데이터 전송 계속
} else {
// 오류 처리
System.out.println("서버가 100 코드를 반환하지 않았습니다.");
}
JavaScript 예시
브라우저에서 XMLHttpRequest 또는 fetch를 사용하여 100 상태 코드를 처리하는 방법은 다음과 같습니다.
fetch('http://example.com/upload', {
method: 'POST',
body: largeFile
}).then(response => {
if (response.status === 100) {
// 데이터 전송 계속
} else {
// 오류 처리
console.log("서버가 100 코드를 반환하지 않았습니다.");
}
});
모범 사례
- 상태 코드 100 사용에 대한 권장 사항: 클라이언트는 요청 본문을 전송하기 전에 항상 서버의 응답을 확인해야 합니다.
- 클라이언트 및 서버 측에서의 문제 회피: 서버는 100 코드를 지원해야 하며, 클라이언트는 이를 처리할 수 있도록 구현해야 합니다.
자주 묻는 질문
- 클라이언트가 100 코드를 받을 때 기대되는 동작은 무엇인가요? 클라이언트는 요청 본문을 계속 전송해야 합니다.
- 서버가 100 코드를 지원하지 않을 경우 어떻게 해야 하나요? 클라이언트는 오류를 처리하고 다른 방법으로 요청을 시도해야 합니다.
상태 코드 | 설명 |
---|---|
100 | Continue - 클라이언트가 요청 본문 전송을 계속할 수 있다는 신호 |
400 | Bad Request - 서버가 요청을 처리할 수 없음 |
500 | Internal Server Error - 서버 내부 오류 발생 |