2011-01-11 10 views
35

Cuando está escribiendo MIME, separa diferentes trozos de su mensaje con un cierto límite. He fallado por alguna razón a encontrar ninguna documentación que explica este límite, pero esto es lo que se reunieron a partir de ejemplos:¿Qué reglas se aplican al límite MIME?

  1. límite puede ser cualquier cadena de letras y números, i. mi. "d29a0c638b540b23e9a29a3a9aebc900aeeb6a82".

  2. No hay reglas para generar el límite, puede simplemente md5sum el nombre de su ser querido, y aquí tiene, usted tiene su límite.

  3. Si va a enviar MIME a través de HTTP, debe agregar un encabezado "Content-Type" que se especifica que lo hace, y su límite, el contenido de una cabecera pueden tener este aspecto:

    multipart/form-data ; boundary = d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

  4. En el cuerpo del mensaje, el límite debe estar precedido con "-", como:

    --d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

Pero siguiendo estas reglas (y this útil respuesta) Fallé al generar una consulta POST que el servidor aceptaría. ¿Me estoy perdiendo de algo? ¿Obtuve algo mal?

Respuesta

57

El syntax of a boundary es:

boundary := 0*69<bchars> bcharsnospace 
bchars := bcharsnospace/" " 
bcharsnospace := DIGIT/ALPHA/"'"/"("/")"/
        "+"/"_"/","/"-"/"."/
        "/"/":"/"="/"?" 

Y el body of a multipart entity tiene la sintaxis (sólo las partes importantes):

multipart-body := [preamble CRLF] 
        dash-boundary transport-padding CRLF 
        body-part *encapsulation 
        close-delimiter transport-padding 
        [CRLF epilogue] 
dash-boundary := "--" boundary 
encapsulation := delimiter transport-padding 
        CRLF body-part 
delimiter := CRLF dash-boundary 
close-delimiter := delimiter "--" 

El precedente -- es obligatorio para todos límite utilizado en el el mensaje y el -- final es obligatorio para el límite de cierre (delimitador cerrado). Por lo que un cuerpo de varias partes con tres partes del cuerpo con boundary como límite puede tener este aspecto:

--boundary 
1. body-part 
--boundary 
2. body-part 
--boundary 
3. body-part 
--boundary-- 
+1

explique * * transporte acolchado también –

+2

qué necesitamos CRLF después del límite de cierre? – johnlowvale

+1

@johnlowvale '[CRLF epilogue]', así que supongo que es opcional terminar con CRLF de acuerdo con [bnf grammar] (https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form). Consulte la sección ** Variantes **. –

Cuestiones relacionadas