2011-01-11 10 views
35

Lorsque vous écrivez MIME, vous séparez différentes parties de votre message avec une certaine limite. J'échoué pour une raison quelconque de trouver une documentation expliquant cette limite, mais voici ce que je rassemblé des exemples:Quelles règles s'appliquent aux limites MIME?

  1. frontière peut être une chaîne de lettres et de chiffres, i. e. "d29a0c638b540b23e9a29a3a9aebc900aeeb6a82".

  2. Il n'y a pas de règles pour générer la limite, vous pouvez juste md5sum le nom de votre bien-aimé, et voilà, vous avez votre frontière.

  3. Si vous envoyez MIME sur HTTP, vous devez ajouter un en-tête « Content-Type » précisant que vous faites, et votre limite, le contenu d'un en-tête peut ressembler à ceci:

    multipart/form-data ; boundary = d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

  4. Dans le corps de votre message, la frontière doit être précédé par "-", comme:

    --d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

Mais suivant ces règles (et this utile réponse) J'ai échoué à générer une requête POST que ce serveur accepterait. Est-ce que je manque quelque chose? Ai-je eu quelque chose de mal?

Répondre

57

Le syntax of a boundary est:

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

Et le body of a multipart entity a la syntaxe (uniquement les parties 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 "--" 

L'ANNÉE PRÉCÉDENTE -- est obligatoire pour tous les limite utilisée dans le Le message -- est obligatoire pour la limite de fermeture (close-delimiter). Ainsi, un corps multipart avec trois parties de corps avec boundary comme limite peut ressembler à ceci:

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

s'il vous plaît expliquer * transport * padding aussi –

+2

avons-nous besoin CRLF après la limite de fermeture? – johnlowvale

+1

@johnlowvale '[epilogue CRLF]' donc je suppose qu'il est facultatif de terminer avec CRLF selon [grammaire bnf] (https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form). Voir la section ** Variantes **. –

Questions connexes