2016-01-24 23 views
0

我試圖讓我的網頁沒有響應。當它被調用時,它會在服務器端調用一些不重要的功能。我希望那裏沒有迴應。不是發送元數據的「空白頁面」響應 - 我的意思是將0字節發送回客戶端。如何使網頁沒有任何響應

這可以從網頁(PHP)完成嗎?或者我會不得不在Apache2中做出這些事情?

+3

我覺得沒有什麼返回0字節響應一個網頁。我認爲你應該創建一個與Apache2或其他Web服務器無關的TCP或UDP服務器。 – MikeCAT

+0

但客戶應該爲其請求得到某種迴應。你爲什麼不想回應? – birraa

+0

主要是因爲我不在乎客戶,而在這個特定的用例中,客戶實際上並不在意應答。儘管如此,呼叫由於某種原因失敗,並且完全沒問題。 (非常非典型的,我知道) –

回答

2

您描述的行爲不能用PHP實現。即使不提供任何內容或中止PHP中的執行,Web服務器仍會發回標題信息。

我會建議使用適當的狀態代碼(204 - 無內容),同時不返回任何正文內容。這是這種情況下的預期行爲(https://tools.ietf.org/html/rfc7231#section-6.3.5)。

如果您需要零字節響應,您需要實現MikeCAT建議的自定義TCP或UDP服務器。

+1

Upvoting使用正確的狀態碼。 – LSerni

1

你不能在PHP中完全做到這一點,因爲HTTP協議要求要發回。至少是一個HTTP狀態碼。

您可以可能(根據您的設置)通過清除輸出緩衝器和終止腳本減少輸出到裸露的骨頭:

while (ob_get_level()) { ob_end_clean(); } 
$file = ""; $line = 0; 
if (headers_sent($file, $line)) { 
    die("DEBUG: first stop headers being sent by {$file} at line {$line}"); 
} 
die(Header('HTTP/1.0 200 OK');