2013-09-24 27 views
0

我想使用內容類型Multipart呈現網頁,但我的嗅探器日誌始終顯示網頁上圖像的多個GET請求。如何指定多部分HTML代碼,以便通過1 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> 

當我做了刷新該網頁上,我希望看到一個GET請求,但我看到多個GET請求(一個用於主網頁和一個爲一個圖像文件)。 這樣的:

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消息(與 '邊界=' 數據)。 像這樣(從另一個網站):

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 
+0

您如何期待它下載圖像而不發送GET請求? – Barmar

+0

多部分MIME類型僅適用於電子郵件,而不適用於網頁。 – Barmar

+0

這僅測試在頁面加載/刷新時,multipart是否導致1個GET請求或多個GET請求。 所有桌面瀏覽器在加載頁面時都會忽略多部分併發送幾個GET請求。但是,我有一個較舊的Brew翻蓋手機,並且此手機支持多部分/表單數據,所以我期望1個GET請求以及來自服務器的一個或多個連續(200)響應。 –

回答

0

You won't be able to do this in 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.content-type

一個特殊格式的字符串提供字符編碼名稱。值: 以下部分,在嚴格按照下列順序:

  1. 文本字符串「text/html;」。
  2. (可選)一個或多個空格字符。
  3. 字符串「charset=」。
  4. 以下其中之一:
    • 對於HTML語法中的文檔:字符編碼名稱。
    • 對於XML語法中的文檔:字符串「UTF-8」的任何不區分大小寫的匹配。

換句話說,因爲這是一個HTML文件時,只允許內容類型是 「text/html的」。

您想要在服務器端的HTTP標頭中指定「multipart/mixed」(例如使用PHP標頭()或類似標籤)。但即使如此,它似乎是支持它的唯一瀏覽器是Firefox/Netscape;請參閱How to download multiple files with one HTTP request?