0

マルチパート コンテンツ タイプを使用して Web ページをレンダリングしたいのですが、スニファー ログには常に、Web ページ上の画像に対する複数の GET 要求が表示されます。

ここに私のテストコードがあります:

<!DOCTYPE html>
<html>
<head>
    <title>multipart/form-data</title>
    <header><h2>Testing multipart/form-data</h2></header>
    <META HTTP-EQUIV="Content-Type" CONTENT="multipart/related; charset=ISO-8859-1"/>
</head>
<body>
    Text outside the &lt;form&gt; tag.
    <form 
        enctype="multipart/form-data"   
        method="POST"
        action="/php/showPostGet.php" >   <!-- The enctype attribute can only be used if method="post". -->

        Text inside the &lt;form&gt; tag.<br />
        <input type="submit" value='TEST'/><br>
        <form enctype="multipart/text/plain">
            Name1: <input type="text" name="fname" value="ABC"><br>
            Name2: <input type="text" name="lname" value="123"><br>
        </form>
        <br />
        <img src="/images/arrow_left.jpg"  alt="left">
        <img src="/images/arrow_right.jpg" alt="right">
        <img src="/images/arrow_up.jpg"    alt="up">
        <img src="/images/arrow_down.jpg"  alt="down">
        <br/>
    </form>
</body>
<br/>
</html> 

この Web ページを更新すると、単一の GET 要求が表示されるはずですが、複数の GET 要求が表示されます (メイン ページ用に 1 つ、画像ファイル用に 1 つ)。このような:

7 10.738337   163.64.287.173         10.235.5.146          HTTP     GET /mdg/HTML/FileUpload/Andy/multipart-form-data.html HTTP/1.1

9 10.739553   10.235.5.146          163.64.287.173         HTTP     HTTP/1.1 200 OK (text/html)

Content-Type: text/html; charset=ISO-8859-1\r\n

<META HTTP-EQUIV="Content-Type" CONTENT="multipart/form-data; charset=ISO-8859-1"/>

17 12.945487   163.64.287.173         10.225.57.136          HTTP     GET /images/arrow_left.jpg HTTP/1.1

19 12.946704   10.225.57.136          163.64.287.173         HTTP     HTTP/1.1 200 OK (JPEG JFIF image)

Content-Type: image/jpeg\r\n

28 14.816313   163.64.287.173         10.225.57.136          HTTP     GET /images/arrow_right.jpg HTTP/1.1

30 14.817529   10.225.57.136          163.64.287.173         HTTP     HTTP/1.1 200 OK (JPEG JFIF image)

Content-Type: image/jpeg\r\n

41 17.196125   163.64.287.173         10.225.57.136          HTTP     GET /images/arrow_up.jpg HTTP/1.1

43 17.197342   10.235.5.146          163.64.287.173         HTTP     HTTP/1.1 200 OK (JPEG JFIF image)

Content-Type: image/jpeg\r\n

51 19.060141   163.64.287.173         10.225.57.136          HTTP     GET /images/arrow_down.jpg HTTP/1.1

53 19.061358   10.225.57.136          163.64.287.173         HTTP     HTTP/1.1 200 OK (JPEG JFIF image)

Content-Type: image/jpeg\r\n

1 つの get 要求に続いて、いくつかの OK/CONTINUATION メッセージ ('boundary=' データ付き) が表示されると予想していました。このようなもの(別のWebサイトから):

901 15:36:40.100491 10.277.7.10 72.253.197.19 HTTP GET /app/WT/default.aspx?vtbl=1&debugds=320&vzmw3=vzmw3 HTTP/1.1

903 15:36:40.317813 72.253.197.19          10.277.7.10           HTTP     HTTP/1.1 200 OK

Content-Type: multipart/mixed; boundary=next.part.8412f441-e4ea-4554-8400-9a003df2f78f\r\n

Content-Type: multipart/mixed; boundary=next.part.8412f441-e4ea-4554-8400-9a003df2f78f\r\n

MIME Multipart Media Encapsulation, Type: multipart/mixed, Boundary: "next.part.8412f441-e4ea-4554-8400-9a003df2f78f"

First boundary: --next.part.8412f441-e4ea-4554-8400-9a003df2f78f\r\n

Content-Type: text/html; charset=utf-8\r\n

905 15:36:40.319315 63.64.187.229         97.253.137.46         HTTP     HTTP/1.1 200 OK

Content-Type: multipart/mixed; boundary=next.part.8412f441-e4ea-4554-8400-9a003df2f78f\r\n

Content-Type: multipart/mixed; boundary=next.part.8412f441-e4ea-4554-8400-9a003df2f78f\r\n

906 15:36:40.320116 72.253.197.19          10.247.7.10           HTTP     Continuation
4

1 に答える 1

0

HTML でこれを行うことはできません。Content-Type: multipart/...は HTTP ヘッダーですが、HTML タグ<meta http-equiv="content-type">がサポートする値は、次のように非常に限定されています: http://www.w3.org/TR/html-markup/meta.http-equiv.content-type.html#meta.http-equiv .コンテンツタイプ

文字エンコーディング名を提供する特別にフォーマットされた文字列。値: 次のパーツを正確に次の順序で:

  1. リテラル文字列 " text/html;"。
  2. オプションで、1 つ以上のスペース文字。
  3. リテラル文字列 " charset="。
  4. 次のいずれかです。
    • HTML 構文のドキュメントの場合: 文字エンコーディング名。
    • XML 構文のドキュメントの場合: 大文字と小文字を区別しない文字列 " UTF-8" の一致。

つまり、これは HTML ドキュメントであるため、許可されるコンテンツ タイプは「text/html」のみです。

サーバー側の HTTP ヘッダーで "multipart/mixed" を指定したい (例: PHP header() などを使用)。しかしそれでも、それをサポートしているブラウザは Firefox/Netscape だけのようです。1 つの HTTP 要求で複数のファイルをダウンロードする方法を参照してください。

于 2013-11-04T22:59:35.813 に答える