%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
在我的 PHP 檔案中,我有以下程式碼(不是真正的程式碼,僅用於演示目的):
ob_start();
var_export(headers_sent());
var_export(ob_get_status());
header('Content-Type: text/html');
header('Content-Type: application/json');
但響應標頭最終變成text/html
了application/json
.根據我的理解,最後一次呼叫應該header()
是所使用的 - 特別是因為headers_sent()
返回 false 並且ob_get_status()
還將確認輸出緩衝已開啟。
在PHP 文件因為header()
它在 5.1.2 版本的更新日誌中說了這樣的聲明:
此功能現在可以防止一次發送多個標頭,以防止標頭注入攻擊。
但我不太確定這意味著什麼 - 因為自 PHP 5.1.2 以來這肯定不是一個問題。
乃至WordPress依賴header()
多次調用,例如。在wp-admin/admin-ajax.php
檔案開頭呼叫的地方@header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );
,然後當它確定該操作需要傳回它@header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
在wp_send_json()
in中呼叫的 JSON 資料時wp-includes/functions.php
。
我可以在伺服器上進行更改以使 PHP 使用最後給定的內容類型嗎?我顯然無法更改 WordPress 核心文件。
我使用 Debian 9.3、PHP 7.1.3、Apache 2.4.25。
網站說明:此問題的影響是媒體庫不會在網格模式下載入任何圖像,並且活動指示器只是不斷旋轉。
!!更新 !
現在我發現發生這種情況是因為我的.htaccess
文件中有以下內容:
php_value output_handler mb_output_handler
我已經忘記了為什麼會有這個東西,所以我不確定我是否敢把它去掉……但是為什麼它會有這樣的效果呢?