簡體   English   中英

“ Content-Length”標頭未傳遞到標頭

[英]'Content-Length' header is not passed to headers

我正在嘗試構建一個Phonegap應用程序,該應用程序在加載已從MySQL數據庫查詢的JSON數據時顯示進度指示器。 我確實從我自己那里從遠程服務器上計算了Ajax加載部分,但是現在我無法在進度指示器部分上找到出路。

經過大量搜索,我正在嘗試使此腳本工作。 目前該腳本不適用於我,因為lengthComputable為false。

我讀到lengthComputable是由標頭指定的,標頭需要由PHP設置(或可以這樣設置):

ob_start();

// Code...

$length = ob_get_length();
header('Content-type: text/html;charset=utf-8');    
header('Access-Control-Allow-Origin: *');
header('Content-Length: '.$length."\r\n");
header('Accept-Ranges: bytes'."\r\n");

使用Firebug時,我注意到我設置的所有標頭(例如Access-Control…Accept-RangesContent-Type實際上都已設置,但Content-Length未設置。

在此處輸入圖片說明

為什么? 如何設置Content-Length標頭? 這將使腳本“神奇地”工作,還是我仍在摸索中尋找進度指示器?

您的Firebug屏幕截圖顯示您已將Transfer-Encoding設置為chunked 這通常意味着在內容生成時將其流式傳輸給用戶,而不是一次全部。 在這種模式下,您不能使用Content-Length 大概您的服務器正在剝離不允許的標頭。

您也許可以重新配置服務器,而不用流式傳輸響應,但是最簡單的解決方案是添加一個不同的標頭,例如X-Filesize並從中計算進度。 但是,它可能不適用於Phonegap的自動進度計算。

您也許可以找到在分塊編碼服務器上獲取Content-Length標頭的方法。 別這樣 違反HTTP標准可能在一種特定情況下可行,但會導致各種各樣的問題。

這可能不是最好的解決方案,但是我為您提供了一個簡單的解決方案。

找到喜歡的加載方式的gif,例如,讓我們這樣說:

http://sierrafire.cr.usgs.gov/images/loading.gif

提取gif並將其放在要加載數據的div /字段中。

例如:

<div id="data"><img src='http://sierrafire.cr.usgs.gov/images/loading.gif' alt="loading" /></div>

然后在jQuery代碼中執行以下操作:

$(document).ready(function(){
    $.get( "/url/you/load/from", function( data ) {
      $("#data").stop().fadeOut(0).fadeIn("10").html(data);
    });
});

這將覆蓋加載程序gif,並在完成加載后顯示數據。

希望對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM