65

転送クォータの進化について Web ページをチェックするプロセスを自動化するサイドバー ガジェットを開発しようとしています。私はほとんどそれに取り組んでいますが、それを機能させるために必要な最後のステップがあります。正しい POST データを含む HttpRequest を php ページに送信することです。Firefox プラグインを使用すると、ヘッダーの「Content-Type」は次のようになります。

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

パラメータ「境界」はランダムに見え、POSTDATAは次のとおりです。

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

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

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

謎の「境界」パラメーターが戻ってくる POSTDATA を正しくエミュレートする方法がわかりません。

誰かが私がこれを解決する方法を知っていますか?

4

3 に答える 3

82

RFC 1341 のセクション 7.2.1から引用するboundaryと、ヘッダーのパラメーターの関連ビットと見なされるものContent-Type(MIME 用):

「マルチパート」のすべてのサブタイプは、共通の構文を共有しています...

マルチパート エンティティの Content-Type フィールドには、カプセル化の境界を指定するために使用される「境界」という 1 つのパラメータが必要です。カプセル化の境界は、完全に 2 つのハイフン文字 (「-」、10 進コード 45) と、その後に続く Content-Type ヘッダー フィールドの境界パラメーター値で構成される行として定義されます。

そして、次のことを明確にします。

したがって、典型的なマルチパート Content-Type ヘッダー フィールドは次のようになります。

 Content-Type: multipart/mixed; boundary=gc0p4Jq0M2Yt08jU534c0p

これは、エンティティがいくつかの部分で構成され、ヘッダー領域が完全に空である可能性があることを除いて、RFC 822 メッセージと構文的に同一の構造を持つそれぞれの部分と、各部分の前に --gc0p4Jq0M2Yt08jU534c0p という行があることを示します。

注意事項:

  1. カプセル化の境界は、行の先頭、つまり CRLF (Carriage Return-Line Feed) に続く必要があります。
  2. 境界の直後には、別の CRLF と次の部分のヘッダー フィールド、または 2 つの CRLF が続く必要があります。この場合、次の部分のヘッダー フィールドはありません (したがって、Content-Type text/プレーン)。
  3. カプセル化の境界は、カプセル化内に出現してはならず、先頭の 2 つのハイフンを除いて 70 文字を超えてはなりません。

最後だが大事なことは:

最後のボディ部分に続くカプセル化境界は、これ以上ボディ部分が続かないことを示す明確な区切り文字です。このような区切り記号は、前の区切り記号と同じですが、行末にさらに 2 つのハイフンが追加されています。

 --gc0p4Jq0M2Yt08jU534c0p-- 

全体像を把握する前にしばらくローミングする必要があったため、これが将来他の誰かに役立つことを願っています (最も深い理解を得るために必要な RFC を必ず読んでください)。

于 2012-06-07T13:12:28.210 に答える
43

境界パラメーターは、多数のハイフンと末尾のランダムな文字列に設定されますが、任意の値に設定できます。問題は、境界文字列が要求データに表示される場合、それが境界として扱われることです。

いくつかのヒント、および multipart/form-data を送信する関数の例については、この質問に対する私の回答を参照してください。送信したい部分ごとにループを使用するようにその関数を変更することはそれほど難しくありません。

于 2010-02-21T11:02:22.813 に答える
6

multipart/form-data の実際の仕様はRFC 7578にあります。境界はセクション 4.1で定義されています。

于 2010-02-21T08:32:21.830 に答える