Programing

헤더 ( 'Content-Type : text / plain');

crosscheck 2020. 12. 14. 07:52
반응형

헤더 ( 'Content-Type : text / plain'); 전혀 필요하지 않습니까?


나는 아직이 머리 정보의 유무에 관계없이 차이를 보지 못했습니다.


"필요"를 정의하십시오.

브라우저가 파일 유형 도록하려면 필요합니다 . 브라우저가 HTML을 포함하지 않는 HTML 파일로 처리하도록 Content-Type헤더를 text/html재정의하지 않으면 PHP는 자동으로 헤더를로 설정합니다 . 출력에 HTML이 포함 된 경우 매우 다른 결과를 볼 수 있습니다. 보내는 경우 :

<b><i>test</i></b>

a Content-Type: text/html는 다음을 출력합니다.

테스트

반면에 Content-Type: text/plain다음과 같이 출력됩니다.

<b><i>test</i></b>

TLDR 버전 : 당신이 정말로 텍스트 만 출력 (outputting)하는 경우는 중요하지 진짜로, 그러나 입니다 잘못된.


PHP는 Content-Type "text / html"을 기본값으로 사용합니다. 이것은 "text / plain"과 매우 유사합니다. 이것이 왜 차이점이 보이지 않는지 설명합니다. 텍스트를있는 그대로 (<>-기호 포함) 출력하려면 text / plain이 필요합니다. 예 :

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

어떤 유형의 데이터를 전송하는지 브라우저에 알려주는 것이 매우 중요합니다. 차이점은 분명해야합니다. 브라우저에서 다음 PHP 파일의 출력을보십시오.

<?php
header('Content-Type:text/html');
?>
<p>Hello</p>

다음이 표시됩니다.

여보세요

(이 경우 헤더 행을 놓친 경우에도 동일한 결과를 얻을 수 있습니다-text / html은 php의 기본값입니다)

텍스트 / 일반으로 변경

<?php
header('Content-Type:text/plain');
?>
<p>Hello</p>

다음이 표시됩니다.

<p> 안녕하세요 </ p>

이것이 왜 중요합니까? 예를 들어 ajax 요청에서 사용되는 PHP 스크립트에 다음과 같은 내용이있는 경우 :

<?php
header('Content-Type:text/html');
print "Your name is " . $_GET['name']

Someone can put a link to a URL like http://example.com/test.php?name=%3Cscript%20src=%22http://example.com/eviljs%22%3E%3C/script%3E on their site, and if a user clicks it, they have exposed all their information on your site to whoever put up the link. If you serve the file as text/plain, you are safe.

Note that this is a silly example, it's more likely that the bad script tag would be added by the attacker to a field in the database or by using a form submission.


Setting the Content-Type header will affect how a web browser treats your content. When most mainstream web browsers encounter a Content-Type of text/plain, they'll render the raw text source in the browser window (as opposed to the source rendered at HTML). It's the difference between seeing

<b>foo</b>

or

foo

Additionally, when using the XMLHttpRequest object, your Content-Type header will affect how the browser serializes the returned results. Prior to the takeover of AJAX frameworks like jQuery and Prototype, a common problem with AJAX responses was a Content-Type set to text/html instead of text/xml. Similar problems would likely occur if the Content-Type was text/plain.


Say you want to answer a request with a 204: No Content HTTP status. Firefox will complain with "no element found" in the console of the browser. This is a bug in Firefox that has been reported, but never fixed, for several years. By sending a "Content-type: text/plain" header, you can prevent this error in Firefox.


no its not like that,here is Example for the support of my answer ---->the clear difference is visible ,when you go for HTTP Compression,which allows you to compress the data while travelling from Server to Client and the Type of this data automatically becomes as "gzip" which Tells browser that bowser got a zipped data and it has to upzip it,this is a example where Type really matters at Bowser.

참고URL : https://stackoverflow.com/questions/1414325/is-headercontent-typetext-plain-necessary-at-all

반응형