아직이 머리 정보의 유무에 차이가 없었습니다.헤더 ('Content-Type : text/plain'); 꼭 필요한가?
답변
"필수"를 정의하십시오.
브라우저를 원하면 을 알고 있어야합니다. 파일의 종류는 무엇입니까? PHP는 Content-Type
헤더를 자동으로 text/html
으로 설정하여 브라우저가 HTML을 포함하지 않는 HTML 파일로 처리하도록 무시합니다. 출력물에 HTML이 포함되어 있으면 매우 다른 결과가 나타납니다. 당신은 보낼 것 인 경우 :
<b><i>test</i></b>
Content-Type: text/html
것 출력 :
테스트
Content-Type: text/plain
반면 것이라고 출력 :
<b><i>test</i></b>
TLDR 버전 : 당신이 만약 실제로 텍스트를 출력하는 것만 큼 중요하지는 않지만 은입니다.
text/html 인 PHP 기본 콘텐츠 유형에 대한 진술을 제공 할 수 있습니까? 동의하지 않습니다. 단지 공식적인 문서를 찾는 것입니다. – billynoah
php.ini에서 "default_mimetype"을 검색하십시오. "PHP의 기본 제공 기본값은 text/html"입니다. 왜 그런지는 모르지만 [매뉴얼] (http://php.net/manual/en/ini.core.php#ini.default-mimetype)에 실제로 언급되어 있지는 않습니다. –
감사합니다. 나는 실제로 이것을 오늘 일찍 질문으로 게시하고이 설정에 대해 배웠다. – billynoah
PHP는 기본적으로 Content-Type "text/html"을 사용합니다.이 텍스트는 "text/plain"과 매우 유사하므로 차이점이없는 이유를 설명합니다. 텍스트를 그대로 출력하려면 text/plain이 필요합니다 (<> -ymbols 포함). 예 : 없음
header("Content-Type: text/plain");
echo "<b>hello world</b>";
// Output: <b>hello world</b>
header("Content-Type: text/html");
echo "<b>hello world</b>";
// Output: hello world
* 브라우저 *는 기본적으로 text/html을 사용하지 않습니다 : PHP는 이것을 사용합니다. – Miles
사소한 세부 사항 - 예제 코드는 여전히 유효합니다. –
그리고 설명은 여전히 잘못되었습니다 ... –
이 아니 그런 식으로, 여기 내 대답의 지원을위한 예입니다 ---- 당신이 데이터 동안 압축 할 수 HTTP 압축, 갈 때> 명확한 차이는 볼 수 서버에서 클라이언트로 이동하면이 데이터의 유형이 자동으로 "gzip"이되어 브라우저에 바우어가 압축되어 있고 upzip입니다.이 유형은 Bowser에서 Type이 중요한 경우의 예입니다.
실제로 그것이 어떻게 작동하는지 실제로는 아닙니다. –
나는 내가 정말로 내 지식을 수정하고 배울 정말로 열망하기 때문에 내가 틀렸다는 것을 설명 할 수있다. –
oohh !! 나중에 미안 해요 그냥 내 마음에서 미끄러하지만, 당신이 유형을 정의하는 경우, 그것은 당신이 어떤 선택적 유형을 압축 할 수 있습니다 동의하지 않습니다 –
Content-Type 헤더를 설정하면 웹 브라우저에서 콘텐츠를 처리하는 방식이 달라집니다. 대부분의 주류 웹 브라우저가 Content-Type의 text/plain을 발견하면 HTML에서 렌더링 된 소스와 달리 브라우저 창에 원시 텍스트 소스를 렌더링합니다. XMLHttpRequest
객체를 사용하는 경우 그것은 foo는 또한
<b>foo</b>
또는
을보고 사이의 차이입니다, 당신의 Content-Type 헤더는 브라우저가 반환 된 결과를 직렬화하는 방법에 영향을줍니다 . jQuery 및 Prototype과 같은 AJAX 프레임 워크를 인수하기 전에 AJAX 응답의 일반적인 문제점은 text/xml 대신 text/html로 설정된 Content-Type이었습니다. Content-Type이 text/plain이면 비슷한 문제가 발생할 수 있습니다.
204 : No Content HTTP 상태로 요청에 응답하고 싶다고합시다. Firefox가 브라우저의 콘솔에서 "요소를 찾을 수 없습니다"라는 메시지가 표시됩니다. 이것은 몇 년 동안보고되었지만 수정되지 않은 Firefox의 버그입니다. "Content-type : text/plain"헤더를 보내면 Firefox에서이 오류를 방지 할 수 있습니다.
어떤 종류의 데이터를 보내고 있는지 브라우저에 알리는 것이 매우 중요합니다. 그 차이는 분명해야합니다. 브라우저에서 다음 PHP 파일의 출력을보십시오.
<?php
header('Content-Type:text/html');
?>
<p>Hello</p>
당신은 볼 수 있습니다 :
이 경우 헤더 행을 놓칠 경우 동일한 결과를 얻을 것이다안녕하세요
(주 - 텍스트/HTML은 PHP의 기본이다 일반 텍스트)
변경을/
<?php
header('Content-Type:text/plain');
?>
<p>Hello</p>
당신은 볼 수 있습니다 :
< P> 안녕하세요 </P>
않는 이유는이 문제? 당신은 예를 들어, 아약스 요청에 의해 사용되는, PHP 스크립트에 다음과 같은 경우 :
<?php
header('Content-Type:text/html');
print "Your name is " . $_GET['name']
누군가가 자신의 사이트에 http://example.com/test.php?name=%3Cscript%20src=%22http://example.com/eviljs%22%3E%3C/script%3E 같은 URL에 대한 링크를 넣을 수 있습니다, 그리고 사용자가이를 클릭하면 , 그들은 귀하의 사이트에있는 모든 정보를 링크를 올리는 사람에게 공개했습니다. 파일을 text/plain으로 제공하면 안전합니다.
이것은 바보 같은 예입니다. 잘못된 스크립트 태그가 공격자에 의해 데이터베이스의 필드에 추가되거나 양식 제출을 사용했을 가능성이 큽니다.
대답은 거의 똑같은데 그 중 아무 것도 올바른 대답으로 선택되어 있지 않습니다 ... – Christian