요청을 할 때, 당신은 시신을 형성하는 게시물로의 인코드할 데이터 요청에 따라 어떤 식으로든.
HTML 양식 방법이 3 가지가 제공하십시오 인코딩입니다.
수행 중인 작품은 추가 ['응용 프로그램 / json'] (http://www.w3.org/TR/html-json-forms/), 단 한 번도 폐기됐다.
(다른 인코딩을 무슬림으로써 HTML 양식이 아닌 다른 수단을 사용하여 생성할지 HTTP 요청을 사용할 수 있습니다.)
클라이언트측 코드를 작성할 때:
서버 측 코드를 작성할 때:
대부분의 (같은 Perl& # 39 의 'CGI->, 매개 변수' 또는 '슈퍼전역' $ # 39 에 의해 노출된 한 PHP& _POST) 가 그 차이점을 잘있게나 당신꺼에요. # 39 를 서버에서 기초형상 입력이 수신되었습니다 해석하고, don& 수는 없는 노릇.
쓰는 경우 (또는 디버깅) 의 구문 분석 또는 기초형상 데이터를 생성 후 라리브러리 형식에 대한 걱정 시작 합니다. 이에 대해 알고 싶어 # 39 의 interest& 조사하기 위해 수도 있습니다.
'응용 프로그램 / 이하' 가 더 동일합니까 x 로렌코디드 korea. 양식 쿼리 문자열 끝에 있는 url.
multipart / 양식 데이터 '' 는 훨씬 더 복잡하지만 전체 데이터 파일을 포함할 수 있습니다. 그 예를 찾아볼 수 있다. [HTML 4 사양명세] (http://www.w3.org/TR/html401/interact/forms.html # h-17.13.4).
text / plain '는' 에서 선보인 HTML 5 와 에만 유용합니다 디버깅하지 - [사양] [1]: 않는 안정적으로 해석 의해 컴퓨터 리스토어와 I& # 39; d 주장한다 다른 함께 툴 (같은 개발자 툴과 네트워크없음 탭에 대부분의 브라우저에서) 가 더 나은 해당).
[1]: http://www.w3.org/TR/html5/forms.html # text/plain-encoding-algorithm
>. 받아들여야 할 때 사용한다.
[세 가지 가능성을] (있습니다 https://www.w3.org/TR/html5/sec-forms.html # 요소점 타르데프 엔스티페 양식) "에 대한 엔스티페 ':
예를 들어, 각 방법을 한 번 보게 됩니다 명백하네 작동 원리, 언제 콩지름에 각각.
예제를 사용하여 만들 수 있습니다.
최소한의 양식을 저장할 수 있는 '.html' file:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>upload</title>
</head>
<body>
<form action="http://localhost:8000" method="post" enctype="multipart/form-data">
<p><input type="text" name="text1" value="text default">
<p><input type="text" name="text2" value="aωb">
<p><input type="file" name="file1">
<p><input type="file" name="file2">
<p><input type="file" name="file3">
<p><button type="submit">Submit</button>
</form>
</body>
</html>
벡터 공간, 'b', 즉, 기본 텍스트 값을 # x03C9 a& '는' U '+' ω '때문에' 아ω브 03C9 있는 바이트입니다 '61 (62)' 의 cf 89 utf-8.
파일을 생성하는 업로드입니다:
echo 'Content of a.txt.' > a.txt
echo '<!DOCTYPE html><title>Content of a.html.</title>' > a.html
# Binary file containing 4 bytes: 'a', 1, 2 and 'b'.
printf 'a\xCF\x89b' > binary
우리의 작은 실행하십시오 echo 서버:
while true; do printf '' | nc -l 8000 localhost; done
열어보려면 클릭하면 HTML 브라우저 상의 파일을 선택하고 제출하고 확인 가능하다.
nc '가' 이 요청을 받았습니다.
거친: Nc ',' unbuntu 14.04.3 BSD 1.105, Firefox cx3-40.
Firefox 승인에서:
POST / HTTP/1.1
[[ Less interesting headers ... ]]
Content-Type: multipart/form-data; boundary=---------------------------735323031399963166993862150
Content-Length: 834
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="text1"
text default
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="text2"
aωb
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file1"; filename="a.txt"
Content-Type: text/plain
Content of a.txt.
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file2"; filename="a.html"
Content-Type: text/html
<!DOCTYPE html><title>Content of a.html.</title>
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file3"; filename="binary"
Content-Type: application/octet-stream
aωb
-----------------------------735323031399963166993862150--
이 CF 의 바이너리 파일 및 텍스트 필드 ' (' 아ω브 '에서 UTF-8) 61, 62 바이트입니다' 89 전송되므로 말 그대로. Nc 뻦 로컬호스트 8000 hd '와' enable-volume-set 수 있는 바이트입니다 것이라고 밝혔습니다.
61 CF 89 62
보내졌다 (a& # 39, & # 39, 61 '=' b& # 39, & # 39 와 ',' = (62).
따라서 것이 분명하다.
'콘텐트 유형: multipart/form-data. multipart / 양식 데이터 경계 = - 9051914041544843365972754266 '세트' 컨텐트에서 유형을 '와' 경계 '에 있다고 볼 때 분판된 필드는 구체화하십시오.
모든 분야에 헤더도 서브노드 그 이전에 일부 데이터를 얻을 수 있습니다. '컨텐츠 폐기입니다: ',' 이름 ',' 이 '파일_이름 양식 데이터, 필드, 그 뒤를 이어 데이터.
다음 데이터를 읽어들입니다 서버만을 때까지 경계 구체화하십시오. 브라우저 선택하게 경계 나타나지 않는 모든 필드를 때문에, 이 때문에 경계 요청에 따라 다를 수 있습니다.
고유한 경계, 아니 인코딩입니다 없었기 때문에 데이터 필요합니다. 이진 데이터 송신됩니다 그대로.
할 일: what is the 최적이고 경계 크기 ('로그 (N)' I bet) 으로 이름 / 실행 시간 aspt 알고리즘입니다 it? 질문과대답 http://support. https://cs.stackexchange.com/questions/39687/find-the-shortest-sequence-that-is-not-a-sub-sequence-of-a-set-of-sequences
콘텐트 유형 '-' 가 자동으로 검은선을 브라우저.
어떻게 이 판별됩니다 정확히요 http://www1.itrc. 물었다. https://stackoverflow.com/questions/1201945/how-is-mime-type-of-an-uploaded-file-determined-by-browser
'지금', '응용 프로그램 / x 로렌코디드 korea. 양식 변경하십시오 엔스티페' 을 다시 로드하십시오 브라우저, 다시.
Firefox 승인에서:
POST / HTTP/1.1
[[ Less interesting headers ... ]]
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
text1=text+default&text2=a%CF%89b&file1=a.txt&file2=a.html&file3=binary
분명한 것은, 해당 파일 데이터 보내매 basename. 그래서 이 파일내에서 사용할 수 없습니다.
일반적인 텍스트 필드에 있는 경우와 같은 'a' 와 'b' 우리가 지켜보리니 인쇄가능 문자를 보낸 동시에 인쇄할 수 없음 ',' 와 'like' 0xCF 한 바이트입니다 수준들과 0x89 판매규모가 3 바이트입니다 각: '%CF% 89'!
인쇄 불가능한 경우가 많은 반면, 텍스트 파일 업로드하는지 컨테인먼트하는 문자 (예를 들어 이미지) 양식 거의 한 적이 없습니다.
예를 들어 있는 것으로 볼 수 있습니다.
multipart / 양식 데이터 '-'. 몇 바이트입니다 자도으로 경계 부담을 메시지 및 각 바이트입니다 통계하는 중 한 시간 가량을 합니다 하지만 sends 바이트입니다.
따라서, 우리는 우리가 할 수 있는 경우에도 파일 전송 애플리케이션 / x 로렌코디드 korea. 양식 wouldn& 싶지 않다 ',' # 39 있기 때문에, 그래서 비효율적이었습니다.
발견된 적은 있으나 인쇄가능 문자 텍스트 필드, 중요하지 않은 및 생성하는지 오버헤드에 도왔으매 방금 사용한다.
양식, 넌 전송할지 브라우저를 통해 제출할 때 HTTP 프로토콜을 TCP / IP 프로토콜 네트워크의 메시지가 제대로 가려진 피쳐입니다 메시지일까요 구조. Html 페이지를 서버에 데이터를 보낼 수 있는 방법이 있다. < 사용하여, form>, '의.
양식은 제출됨, http 요청 메시지를 보낼 경우 생성 및 서버, 그리고 필드 이름 값을 포함할 수 있는 형식으로 접수됨 사용자가. 이 문제가 발생할 수 있는 '포스트' 또는 '전송' HTTP 확보하십시오 methods.
'는' POST '속성' 엔스티페 사용할 때만 감지에서 메서드입니다. 이 때, 그 내용을 지정되었습니까 전송하십시오 양식에 인코딩입니다 특정 방식으로 있지만브라우저에 지시합니다. [매든 - 폼 엔스티페] 에서 (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form # 속성 엔스티페):
>. 이 때, 이 값은 MIME 엔스티페 메서드입니다 속성은 게시물로의 >. 콘텐츠 유형이 양식이 제출됩니다 데 사용되는 서버로.
양식, 일부 보안 문제를 제출할 때 발생할 수 있는 명시된 대로 [RFC 7578 섹선에서 7: Multipart 양식 데이터 보안 고려사항입니다] (https://tools.ietf.org/html/rfc7578 # 섹션 7):
>. 모든 소프트웨어 양식 데이터 폼 처리 치료해야 할 사용자 제공 >. 개인적으로 포함되어 있는 경우가 많으므로, 기밀이거나 민감도 >. 정보 확인. 넓게퍼진 사용할 수 있습니다 양식 " auto-fill"; >. 웹 브라우저 기능을. 이러한 전략은 사용자들이 데 사용될 수도 있다. >. 그렇지 않으면 기밀 정보를 전송할 때 몰래 완료 >. 속이는 작업. multipart/form-data 모든 기능을 제공하지 않습니다. >. 피할 수 있는 사용자 확인을 위해 무결성에 기밀성, >. 다른 보안 기능, 혼란, 이러한 고민을 합니다. >. ruettgers 의해 양식 데이터를 해석 양식 작성 및 응용 프로그램. >. >. 응용 프로그램을 구매시스템통합에 양식 및 프로세스 아니하시더라 주의해야 한다 >. 공급할 수 있는 사이트를 폼 처리 데이터를 다시 요구하는 것은 >. 전송됩니까 되어 있지 않았다. >. >. 이 때 중요한 내용을 해석하고 파일_이름 - >. 헤더 필드를 폐기입니다 실수로 있는 파일을 덮어씁니다 합니다. >. # 39 의 파일, recipient& 공간.
이 문제를 처리할 경우 사용자가 서버에 끝날 수 있음) 는 개발자 및 양식 제출됨 중요한 정보가 포함된.
>. [인코딩 형식 속성에서는 양식 데이터 인코딩되지 迈向 제출할 때 어떻게 해야 합니다. >. >. [인코딩 형식, 속성, 메서드 = " post" 경우에만 사용할 수 있습니다. >. >. 인코딩됩니다 문자가 없습니다. 이 값은 사용할 때 필요한 양식 있는 파일 업로드 제어입니다
[W3Schools] 에서 (https://www.w3schools.com/TAGs/att_form_enctype.asp)