multipart / form-data의 경계는 무엇입니까?


403

에 대해 질문하고 싶습니다 multipart/form-data. HTTP 헤더에서 Content-Type: multipart/form-data; boundary=???.

사용자가 ???무료로 정의 할 수 있습니까? 아니면 HTML에서 생성됩니까? 내가 정의 할 수 ??? = abcdefg있습니까?


2
나는 이것이 답이라는 것을 알았다. w3.org/TR/html401/interact/forms.html#h-17.13.4.2
질문

답변:


424

사용자가 ???무료로 정의 할 수 있습니까?

예.

또는 HTML에서 제공합니까?

아니요. HTML 은 이와 관련없습니다 . 아래를 읽으십시오.

로 정의 할 ???abcdefg있습니까?

예.

웹 서버에 다음 데이터를 보내려는 경우 :

name = John
age = 12

사용하는 방법 application/x-www-form-urlencoded은 다음과 같습니다.

name=John&age=12

보시다시피 서버는 매개 변수가 앰퍼샌드로 구분되어 있음을 알고 &있습니다. &매개 변수 값에 필요한 경우 인코딩해야합니다.

그렇다면 서버는 multipart/form-data?

와 비슷한 경계 사용 &.

예를 들면 다음과 같습니다.

--XXX
Content-Disposition: form-data; name="name"

John
--XXX
Content-Disposition: form-data; name="age"

12
--XXX--

이 경우 경계 값은 XXX입니다. Content-Type서버가 수신하는 데이터 를 분할 하는 방법을 알 수 있도록 헤더에 지정하십시오 .

따라서 다음을 수행해야합니다.

  • 서버로 전송 된 HTTP 데이터에 나타나지 않는 값을 사용하십시오.

  • 요청 메시지의 모든 곳에서 일관성을 유지하고 동일한 값을 사용하십시오.


54
경계 끝에 추가 "-"를 추가하지 않아도됩니다.
Sebastian Piskorski

13
설명서에서 읽을 수 있습니다. 경계 결말에는 추가로 두 개의 하이픈
Sebastian Piskorski

6
좋은 대답입니다. 경계는 멀티 파트 페이로드의 여러 "파트"를 분리하는 '키'입니다. 일반적으로 '&'와 같은 것은 변수를 분리하기에 충분하지만 페이로드 내에서 페이로드를 분리하려면 더 고유 한 것이 필요합니다.
user2483724

1
@ K3rnel31 물론 새 경계 문자열의 길이가 동일하지 않은 경우.
Oscar Mederos 1

5
Content-Type 헤더에 선언 된 경계 값은 실제로는 -XXX ---라고 생각합니다. 부품을 분리 할 때 여분의 "-"를 작성해야하기 때문에 (따라서 --- XXX ---)
Theodore K .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.