2015-06-21 13 views
-2

我找不到解決此問題的任何解決方案。 我很難用這段代碼。根據我搜索的內容: HTTP/1.1 200 OK - 表示該頁面良好或正常。 我不明白這個頭部功能部件。 它實際上是代碼的一部分。php的頭文件功能是做什麼的?

我的問題是:

  1. 爲什麼這個代碼發送header('HTTP/1.1 200 OK');?我知道這段代碼意味着該頁面很好,但爲什麼我們要發送這些代碼呢?

  2. 什麼是緩存控制部分,以及如果代碼發送了什麼會發生什麼?

  3. 什麼是Expires:,日期是1970年? (請簡單說明)

  4. 如果代碼發送標題('Content-type: application/json');這部分會發生什麼情況,爲什麼我們要發送?

代碼是在這裏:

function json_response($data, $error=false) { 
    if($error) 
    header('HTTP/1.1 500 JSON Error'); 
else 
    header('HTTP/1.1 200 OK'); 

header('Cache-Control: no-cache, must-revalidate'); 
header('Expires: Mon, 01 Jan 1970 00:00:00 GMT'); 
header('Content-type: application/json'); 

// Convert strings/integers into an array before outputting data... 
if(!is_array($data)) 
    echo json_encode(array($data), true); 
else 
    echo json_encode($data, true); 
exit; 
} 
+1

請參閱[RFC7230](https://tools.ietf.org/html/rfc7230)。 – mario

+1

這個問題本來可以通過在谷歌或任何其他搜索引擎上的簡單搜索來回答。文檔中詳細解釋了'header()'函數。 –

+0

我在這裏發佈,因爲我沒有在搜索引擎中找到任何答案 –

回答

1

爲什麼這段代碼發送「header('HTTP/1.1 200 OK');」?我知道這段代碼意味着頁面是好的,但爲什麼我們要發送這段代碼?_

這告訴瀏覽器找到了請求的腳本。然後,大道可以假設它也會獲得一些其他數據。

什麼是緩存控制部分?以及如果代碼發送那將會發生什麼?_

這告訴瀏覽器和中間緩存,不要緩存我發送的數據。這樣,當你再次請求這些數據時,它將不得不轉到你的服務器並重新運行數據收集過程,而不是從瀏覽器緩存或互聯網上某處的中間緩存獲取數據,在你的瀏覽器和你的服務器。

什麼是「過期:」?這個日期是1970年? (請簡單說明)_

這又是用於緩存控制。是說,緩存應該在1970年到期,換句話說,如果你有它緩存,你應該刪除它,因爲1970年很久以前。

如果代碼發送頭('Content-type:application/json'),會發生什麼情況。這部分?爲什麼我們發送這個??? _

這是告訴瀏覽器,你發送的數據是JSON格式,因此如何處理它,在你的情況下,這意味着轉換JSON字符串是被髮送到JavaScript對象,以便JavaScript代碼可以將其作爲本機對象處理,而不必將JSON字符串手動轉換爲Javascript對象。

+0

使用標頭('HTTP/1.1 200 OK')有什麼區別;並沒有使用?我試過這個代碼,但我看不到任何區別 ,我看到很多沒有該標題的php代碼 –

0

您只需返回你有型JSON(header('Content-type: application/json');)的內容瀏覽器,這將檢索(header('Expires: Mon, 01 Jan 1970 00:00:00 GMT');)後直接過期。如果您的瀏覽器尚未過期已經收到的代碼並再次請求它,您會說這些代碼不應該從緩存中使用。相反,它應該再次從服務器中檢索(header('Cache-Control: no-cache, must-revalidate');)。

header('HTTP/1.1 200 OK');只是設置在你的代碼前面有另一個頭集(我認爲)。通常情況下,如果沒有設置標題,可以省略。

0

該代碼從腳本中返回json格式的數據。

如果沒有錯誤,則HTTP/1.1 200 OK由標題返回,這意味着數據將打印到頁面上。

緩存控制意味着您所請求的數據無法寫入內存 - 也就是說,每次加載頁面時,都必須重新加載從頁面獲得的數據。

過期 - 我猜這是因爲Cache控制的原因,如果過期日期總是過去,這意味着每次訪問頁面時,都會重新載入它提供的所有數據。

Application/json指定由腳本返回的數據應該被視爲JSON類型,什麼是JSON,那麼google。