'HTTP'에 해당되는 글 2건
GET/POST 데이터 디코딩
서버측의 데이터 디코딩
- 클라이언트로부터 전달된 폼 양식을 서버에서 디코딩하는 과정이 필요
(1) GET 메소드에 의해 전달된 데이터 디코딩
- GET 메소드에 의해 얻어진 데이터들은 환경변수 QUERY_STRING에 저장
- name=value의 쌍의 데이터
- 인코딩된 문자들을 인코딩과는 반대로 "+"는 공백으로, "%5B"는 "["등으로 바꾸어 주어야 함
- QUERY_STRING에 저장된 문자열에 대해서 URL디코딩
- name=value의 분리 : "&"으로 구분 -> 문자열에서 `&'가 나타날 때까지 한 문자씩 복사한 후, `&'가 나타나면 그 때까지 복사한 문자열을 하나의 name=value쌍으로 저장
- 이러한 과정을 거친 후 최종적으로 name=value의 쌍 구하고 분리
- HTTP request 헤더에 Content-type이라는 헤더 필드는 필요하지 않음
- ASCll 캐릭터만 허용 / 바이너리 데이터 허용되지 않음
(2) POST 메소드에 의해 전달된 데이터 디코딩
- name=value쌍의 디코딩 과정은 GET 메소드와 동일
- 폼 문에서 입력된 문자열을 표준 입력으로 얻음
- 그래서 파일을 다루는 모듈이 필요하다.
- 사용자의 입력을 HTTP request 바디 부분에 넣어서 전송
그래서 HTTP 요청 헤더에 Content-type 필드를 명시해야 함 .
- 문자 한계 없음 > 바이너리 데이터 허용되기 때문에 입출력에 이용
'Code > HTML & CSS & JAVASCRIPT' 카테고리의 다른 글
| 쿠키와 세션 (0) | 2019.06.20 |
|---|---|
| 예제_회원가입 (0) | 2019.06.20 |
| 예제_push,pop (0) | 2019.06.20 |
| 예제_input type 활용 (0) | 2019.06.20 |
| 예제_계산기 (0) | 2019.06.20 |
HTTP 응답 상태
HTTP(하이퍼텍스트 전송 프로토콜) 응답 상태
5개의 클래스로 구분
상태코드의 첫번째 숫자 : 응답의 클래스 정의
| 1XX (요청) | 요청을 받았으면 프로세스를 계속한다. |
| 2XX (성공) | 요청을 성공적으로 받았으면 인식했고 수용하였다. |
| 3XX (리다이렉션) | 요청 완료를 위해 추가 작업 조치가 필요하다. |
| 4XX (클라이언트 오류) | 요청의 문법이 잘못되었거나 요청을 처리할 수 없다. |
| 5XX (서버 오류) | 서버에 명백히 유효한 요청에 대해 충족 실 |
1XX (조건부 응답) : 요청을 받았으면 작업을 계속함
100 (계속) : 요청자는 요청을 계속해야 함. 서버는 이 코드를 제공하여 요청의 첫 번째부분을 받았으며 나머지를 기다림. (여기서 첫번째는 각 페이지 맨 윗부분 자동으로 붙는 부분)
101 (프로토콜 전환) : 요청자가 서버에 프로토콜 전환을 요텅했으며 서버는 이를 승인하는 중
102 (처리) :
2XX (성공) : 클라이언트가 요청하나 동작을 수신하여 이해했고, 승낙햇으며, 성공적으로 처리했음을 가르킴
200 (성공) : 서버가 요청을 제대로 처리했다는 뜻.
201 (작성됨) : 성공적으로 요청되었으며, 서버가 새 리소스 작성함
202 (허용됨) : 서버가 요청을 접수했지만 아직 처리하지 않음
203 (신뢰할 수 없는 정보) : 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신 된 정보를 제공하고 있음
204 (콘텐츠 없음) : 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음
205 (콘텐츠 재설정) : 서버가 요청을 성공적으로 처리했지만, 콘텐츠를 표시하지 않는다. (204와 달리 이 응답은 요청자가 문서 보기 재 설정할 것을 요구한다)
206 (일부 콘텐츠) : 서버가 GET 요청의 일부만 성공적으로 처리함
207 (다중상태) :
208 (이미 보고됨)
226 (IM Used)
3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작 취해야 함
300 (여러 선택항목) : 서버가 요청에 따라 여러 조치를 선택 할 수 있음. 서버가 사용자 에이전트에 따라 수행할 작업을 선택하거나, 요청자가 선택할 수 있는 작업 목록 제공
301 (영구 이동) : 요청한 페이지를 새 위치로 영구적으로 이동. GET 또는 HEAD 요청에 대한 응답으로 이 응답을 표시하면 다른 요청자가 자동으로 새 위치로 전달됨
302 (임시 이동) : 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해 함
303 (기타 위치 보기) : 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드 표시
HEAD 요청 이외의 모든 요청은 다른 위치로 자동으로 전달
304 (수정되지 않음) : 마지막 요청 이우 요청한 페이지는 수정되지 않앗다. 서버가 이 응답 표시하면 페이지의 콘텐츠 표시하지 않음
305 (프록시 사용) : 요청자는 프록시를 사용하여 요청한 페이지만 액세스 할 수 있음.
307 (임시 리다이렉션) : 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 함
308 (영구 리다이렉션) :
4XX (요청 오류) : 클라이언트에 오류가 있음
400 (잘못된 요청): 서버가 요청의 구문을 인식하지 못.
401 (권한 없음): 인증이 필요. 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있다. 상태 코드 이름이 권한 없음(Unauthorized)으로 되어 있지만 실제 뜻은 인증 안됨
402 (결제 필요): 결제가 필요
403 (Forbidden): 서버가 요청을 거부.
404 (Not Found, 찾을 수 없음): 서버가 요청한 페이지(Resource)를 찾을 수 없다.
405( 허용되지 않는 방법): 요청에 지정된 방법을 사용할 수 없다.
예를 들어 POST 방식으로 요청을 받는 서버에 GET 요청을 보내는 경우, 또는 읽기 전용 리소스에 PUT 요청을 보내는 경우에 이 코드를 제공한다.
406 (허용되지 않음): 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없다.
407 (프록시 인증 필요): 401(권한 없음)과 비슷하지만 요청자가 프록시를 사용하여 인증해야 함.
408 (요청 시간초과): 서버의 요청 대기가 시간을 초과.
409 (충돌): 서버가 요청을 수행하는 중에 충돌 발생.
410 (사라짐): 서버는 요청한 리소스가 영구적으로 삭제되었을 때 이 응답을 표시.
411 (길이 필요): 서버는 유효한 콘텐츠 길이 헤더 입력란 없이는 요청을 수락하지 않는다.
412 (사전조건 실패): 서버가 요청자가 요청 시 부과한 사전조건을 만족하지 않는다.
413 (요청 속성이 너무 큼): 요청이 너무 커서 서버가 처리할 수 없다.
414 (요청 URI가 너무 긺): 요청 URI(일반적으로 URL)가 너무 길어 서버가 처리할 수 없다.
415 (지원되지 않는 미디어 유형): 요청이 요청한 페이지에서 지원하지 않는 형식으로 되어 있다.
416 (처리할 수 없는 요청범위): 요청이 페이지에서 처리할 수 없는 범위에 해당되는 경우 서버는 이 상태 코드를 표시한다.
417 (예상 실패): 서버는 Expect 요청 헤더 입력란의 요구사항을 만족할 수 없다.
418 (I'm a teapot)
420 (Enhance Your Calm)
422 (처리할 수 없는 엔티티)
423 (잠김): 접근하려는 리소스가 잠겨 있다.
424 (실패된 의존성)
424 (메드 실패,)
425 (정렬되지 않은 컬렉션, 인터넷 초안)
426 (업그레이드 필요): 클라이언트는 업그레이드 헤더 필드에 주어진 프로토콜로 요청을 보내야 한다.
428 (전제조건 필요)
429 (너무 많은 요청): 사용자가 일정 시간 동안 너무 많은 요청을 보냈다.
431 (요청 헤더 필드가 너무 큼)
444 (응답 없음, Nginx)
449 (다시 시도, 마이크로소프트)
450 (윈도 자녀 보호에 의해 차단됨, 마이크로소프트)
451 (법적인 이유로 이용 불가, 인터넷 초안)
451 (리다이렉션, 마이크로소프트)
494 (요청 헤더가 너무 큼, Nginx)
495 (Cert 오류, Nginx)
496 (Cert 없음, Nginx)
497 (HTTP to HTTPS, Nginx)
499 (클라이언트가 요청을 닫음, Nginx)
5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음
500 (내부 서버 오류): 서버에 오류가 발생하여 요청을 수행할 수 없다.
501 (구현되지 않음): 서버에 요청을 수행할 수 있는 기능이 없다.
502 (Bad Gateway, 불량 게이트웨이): 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 잘못된 응답을 받았다.
503 (서비스를 사용할 수 없음): 서버가 오버로드되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용할 수 없다.
504 (게이트웨이 시간초과): 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 제때 요청을 받지 못했다.
505 (HTTP 버전이 지원되지 않음): 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않는다.
506 (Variant Also Negotiates)
507 (용량 부족,)
508 (루프 감지됨)
509 (대역폭 제한 초과, Apache bw/limited extension)
510 (확장되지 않음)
511 (네트워크 인증 필요,)
520 (Unknown Error, 알 수 없음)
598 (네트워크 읽기 시간초과 오류, 알 수 없음)
599 (네트워크 연결 시간초과 오류, 알 수 없음)
-위키백과(https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C)
'Code > Servlet & JSP' 카테고리의 다른 글
| JSP 예제_errorPage, isErrorPage (0) | 2019.06.20 |
|---|---|
| Scope (0) | 2019.06.20 |
| JSP 예제_includeAction (0) | 2019.06.20 |
| JSP 예제_include (0) | 2019.06.20 |
| JSP 예제_page (0) | 2019.06.20 |