2014-07-03 27 views
0

我打開了一個internet html頁面,看看firebug網絡。頭的線是:僅當客戶端請求圖像時,http請求標頭是否包含「img」?

接受的text/html,應用/ XHTML + xml的,應用/ XML; Q = 0.9,/; Q = 0.8

然後我打開一個互聯網圖片:

接受圖像/ PNG,圖像/ ; q = 0.8, /*;q=0.5

接受的價值是不同的,我想應該是這樣,每次返回所有類型不可接受的瀏覽器:

接受圖像/ PNG,圖片/ ,text/html的,是application/xhtml + xml的,應用程序/ XML; q = 0.8, /*;q=0.5

因爲這樣我就可以知道天氣的服務器應該發送即使客戶端請求HTML PNG圖像。問題是:如果客戶端不請求圖像,我可以知道客戶端瀏覽器可以解析png圖像嗎?

回答

0

這與servlet的工作方式沒有關係,而是如何向HTML頁面發出請求。當你火一些URL的請求,讓我們說https://stackoverflow.com/,你其實火多單的要求更多:

爲每頁圖像
  • 一個GET請求的HTML(文字)內容
    • 一個GET請求在頁面中
    • 頁面中每個資源的一個GET請求(CSS,JS,使用的另一種文件)。

    這可以很容易地通過使用網絡控制檯進行測試。在這種情況下,我使用Chrome控制檯來查看提出的請求訪問到StackOverflow的主要頁面時:

    GET requests on SO


    如果客戶不要求一個形象,我可以知道天氣的客戶端瀏覽器可以解析一個PNG圖像?

    您可以通過檢查響應的內容類型來知道這一點,而不是請求中的標題。

    你甚至可以看到,在PNG圖像http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3c6263c3453b執行請求時,服務器不會發送任何相關的請求頭接受PNG文件:

    請求頭

    的User-Agent :Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/35.0.1916.153 Safari/537。36

    相反,這是在響應報頭處理:

    響應頭

    (...)
    內容類型:圖像/ PNG

  • +0

    你提到的響應的內容類型是否由服務器填充?如果我寫jsp發送響應,我應該寫: – user3802132

    +0

    是的,您可以將它們寫入servlet過濾器。 –

    +0

    該請求並不告訴我客戶端是否可以接受PNG,我應該如何決定應該將jsp寫入response.setHeader(「Content-Type」,「image/png」)還是發送另一個jpg? – user3802132