PHP/Apache: header()에 대한 여러 호출이 작동하지 않습니다.

PHP/Apache: header()에 대한 여러 호출이 작동하지 않습니다.

내 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 이후로 항상 문제가 되지 않았기 때문입니다.

그리고 심지어워드프레스예를 들어 여러 번 전화하는 데 의존하고 있습니다 header(). wp-admin/admin-ajax.php파일 호출의 시작 부분에 있고 나중에 작업 이 에서 @header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );호출하는 JSON 데이터를 반환해야 한다고 결정한 경우입니다 .@header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );wp_send_json()wp-includes/functions.php

PHP가 마지막으로 지정된 콘텐츠 유형을 사용하도록 서버에서 수행할 수 있는 변경 사항이 있습니까? 분명히 Wordpress 핵심 파일을 변경할 수 없습니다.

저는 데비안 9.3, PHP 7.1.3, 아파치 2.4.25를 사용합니다.

사이트 참고 사항: 이 문제로 인해 미디어 라이브러리가 그리드 모드에서 이미지를 로드하지 않고 활동 표시기가 계속 회전하게 됩니다.

!! 업데이트 !!

.htaccess이제 내 파일 에 다음이 있기 때문에 이런 일이 발생한다는 것을 알았습니다 .

php_value output_handler mb_output_handler

왜 거기에 그게 들어 있는지 잊어버렸는데, 감히 제거할 수 있을지 모르겠네요... 그런데 왜 그런 효과가 있는 걸까요?

관련 정보