Frage

Ich versuche, ein Sidebar-Gadget zu entwickeln, die den Prozess der Überprüfung eine Web-Seite für die Entwicklung meiner Transferquote automatisiert. Ich bin es fast, aber es gibt einen letzten Schritt, den ich es arbeiten lassen müssen: einen Httprequest mit den richtigen POST-Daten auf eine PHP-Seite gesendet. eine Firefox-Plugin verwenden, hier ist das, was der „Content-Type“ des Kopf aussieht wie:

Content-Type=multipart/form-data; boundary=---------------------------99614912995

Mit dem Parameter „Grenze“ scheinbar zufällig sein, und die Postdata ist dies:

POSTDATA =-----------------------------99614912995
Content-Disposition: form-data; name="SOMENAME"

Formulaire de Quota
-----------------------------99614912995
Content-Disposition: form-data; name="OTHERNAME"

SOMEDATA
-----------------------------99614912995--

Ich verstehe nicht, wie man richtig die Postdata mit dem Geheimnis „Grenze“ Parameter zu emulieren kommen zurück.

würde jemand wissen, wie ich kann dieses Problem lösen?

War es hilfreich?

Lösung

Die Grenze Parameter werden auf eine Reihe von Bindestrichen sowie eine zufällige Zeichenfolge am Ende gesetzt, aber man kann es überhaupt etwas setzen. Das Problem ist, wenn die Begrenzungszeichenfolge zeigt sich in den Anforderungsdaten, wird es als Grenze behandelt werden.

Für einige Tipps sowie eine Beispielfunktion für das Senden von multipart / form-data siehe meine Antwort auf diese Frage . Es wäre nicht allzu schwierig sein, diese Funktion zu ändern, um eine Schleife für jedes Teil zu verwenden, die Sie senden möchten.

Andere Tipps

Ein Zitat aus dem RFC 1341, Abschnitt 7.2.1 , was ich Sehen Sie die entsprechenden Bits auf dem boundary Parameter des Content-Type Header sein (für MIME):

  

Alle Subtypen von "multipart" eine gemeinsame Syntax ...

     

Das Content-Type Feld für mehrteilige Einheiten erfordert ein Parameter, „Grenze“, die die Kapselung Grenze angeben, verwendet wird. Die Einkapselung Grenze ist definiert als eine Linie vollständig aus zwei Bindestrich-Zeichen bestehenden ( „-“, Dezimalcode 45). Durch den Grenzparameterwert von dem Content-Type-Header-Feld gefolgt

und dann stellt klar:

  

So ein typisches Multipart-Content-Type-Header-Feld könnte wie folgt aussehen:

 Content-Type: multipart/mixed; boundary=gc0p4Jq0M2Yt08jU534c0p
  

Dies zeigt an, daß die Einheit aus mehreren Teilen besteht, die jeweils selbst mit einer Struktur, die identisch mit einer syntaktisch RFC 822-Nachricht ist, mit der Ausnahme, dass der Kopfbereich kann vollständig leer sein, und daß die Teile jeweils durch die Linie voran        --gc0p4Jq0M2Yt08jU534c0p

Reise Hinweis:

  1. Die Kapselung Grenze muss am Anfang einer Zeile auftreten, das heißt, nach einem CRLF (Carriage Return-Line Feed)
  2. Die Grenze muss sofort durch eine andere CRLF und die Header-Felder für den nächsten Teil oder von zwei CRLFs gefolgt werden, wobei in diesem Fall gibt es keine Header-Felder für den nächsten Teil (und es daher sein, von Content- angenommen wird, Type text / plain).
  3. Encapsulation Grenzen dürfen nicht innerhalb der Verkapselungen erscheinen und darf nicht länger als 70 Zeichen, nicht die beiden führenden Bindestriche zählen.

Last but not least:

  

Die Kapselung Grenze nach dem letzten Körperteil ist ein angesehener Begrenzer, die angibt, dass keine weiteren Körperteile folgen. Ein solches Trennzeichen ist identisch mit den vorherigen Trennzeichen, mit dem Zusatz von zwei Bindestriche am Ende der Zeile:

 --gc0p4Jq0M2Yt08jU534c0p-- 

Ich hoffe, das jemand anderes in der Zukunft hilft, als ich für eine Weile roam hatte, bevor das vollständige Bild bekommen (achten Sie bitte die notwendigen RFCs zu lesen das tiefste Verständnis zu bekommen).

Die eigentliche Spezifikation für multipart / form-data ist in RFC 7578 . Boundary ist definiert in Abschnitt 4.1 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top