요약
- RFC 1866은 HTML 저자에게 이름/값 입력을 수집해 선언된 액션과 메서드를 통해 서비스로 전송하는 공통 방식을 제공했다.
- 브라우저가 요청을 구성할 수는 있었지만, HTML이 서비스의 판단을 결정하거나 요청된 효과가 실제 발생했음을 증명하지는 않았다.
페이지가 목적지이기만 하던 시대의 끝
하이퍼링크는 독자에게 다른 리소스로 가는 경로를 제공한다. 폼은 여기에 다른 가능성을 더했다. 독자가 문서의 값을 바꾸고 원격 서비스에 그 처리를 요청하는 것이다. 1995년 11월 RFC 1866으로 공개된 HTML 2.0은 폼을 데이터 집합의 템플릿에 메서드와 액션 URI를 더한 것으로 정의했다. 그 데이터 집합은 이름/값 쌍의 나열이었다. 브라우저가 사용자가 입력하거나 선택한 내용을 수집했고, 액션은 전송 대상을, 메서드는 전송 방식을 지정했다.
이 정의는 지금 들으면 평범하게 느껴진다. 하지만 당시에는 같은 브라우저 안에서 문서 열람을 넘어 네트워크 서비스를 사용하는 실용적인 한 걸음이었다. 검색, 설문, 구독, 예약이 매 사이트마다 전용 클라이언트 없이도 하나의 페이지 안에 들어설 수 있었다. 표준은 모든 서비스 뒤편까지가 아니라 브라우저와 서비스 사이의 공통 전송 규격을 기술했다.
1994년의 기록은 이 모델이 어떻게 다듬어졌는지 보여준다. 7월 11일 Paul Burchard가 Daniel Connolly에게 수정된 FORM 사양을 보냈다. 이 사양은 액션 URL, 메서드, 인코딩 타입, 이름/값 쌍을 정의했고, HTTP는 제안 표준이 요구하는 접속 프로토콜이었다. GET이 기본값이었고 POST는 많은 응용에 적합하다고 보았다. 10일 뒤 Connolly는 HTML 2.0이 최종 검토 단계에 있다고 밝히며 대화형 검증기를 소개했다. 사용자가 HTML을 입력하면 서버가 제안된 DTD 기준 구문 분석 결과를 돌려주는 방식이었다. 이것은 검토 과정에서 브라우저 입력이 실제로 쓰였다는 특정 사례를 증명할 뿐, 폼이 얼마나 보편적이었는지를 보여주지는 않는다. 같은 달의 IETF 회의록은 표준화의 기술적 주제 가운데 폼을 나열했다.
RFC 1866은 이미 비공식적으로 쓰이던 기능을 공식화했고, 레벨 2 사용자 에이전트가 폼 입력과 제출을 지원할 것을 권고했다. 이 문구는 기대치를 정했을 뿐, 모든 브라우저가 모든 컨트롤을 구현했음을 증명하지도, 서버 응용을 이식 가능하게 만들지도 않았다. 표준화된 것은 브라우저 쪽 교환과 요청 구성이었다.
GET 방식에서 브라우저는 폼 데이터를 액션 URI로 인코딩해 링크를 따라가듯 접근했다. RFC 1866은 멱등한 처리, 즉 요청을 반복해도 지속적인 관찰 가능한 변화가 생기지 않아야 하는 경우에 GET을 권고했다. 검색이 그 예였다. URI는 저장하거나 공유할 수 있었다. RFC는 긴 URI가 과거 서버의 결함을 드러낼 수 있다고 경고하며 GET이 지속적 부작용을 일으켜서는 안 된다고 명시했다. 제출이 데이터베이스를 바꾸거나 누군가를 구독시키는 경우에는 POST가 권고되었다. POST는 인코딩된 이름/값 데이터를 요청 본문에 담았고, 브라우저는 GET 이후와 마찬가지로 응답을 표시했다.
두 메서드 중 어느 것도 서버가 무엇을 할지 결정하지 않았다. GET의 부작용 금지 기대는 서비스가 이를 지키는 데 의존했다. POST는 처리할 데이터를 전달했지만 트랜잭션, 접수 확인, 특정 결과를 보장하지 않았다. 검증과 효과의 통제 지점은 여전히 서버에 있었다.
기본 모델은 로컬 파일을 일반 폼 필드로 보낼 수 없었다. 같은 달에 공개된 RFC 1867은 업로드를 위해INPUT TYPE=FILE,ACCEPT,multipart/form-data를 제안했다. 이 문서는 인터넷 표준이 아니라 명시적으로 실험적(Experimental) 상태였다. 새 기능마다 각자의 상태와 구현 경로를 가졌다.
폼만으로 웹 응용이 만들어진 것은 아니다. HTTP에는 이미 메서드가 있었고, 서버는 이미 요청을 처리하고 있었으며, 초기 브라우저들은 서로 달랐다. 경계가 분명한 변화는 HTML이 저자에게 사용자가 제어하는 값을 브라우저 요청에 담는 선언적 방법을, 구현자에게 그 요청을 구성하는 공통 규칙을 제공했다는 점이다. 페이지가 던지는 질문, 브라우저의 전송, 서비스의 판단은 서로 분리된 채로 남았다.
출처
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





