2015-04-23 3 views
0

У меня есть скрипт на PHP, который имеет некоторый вывод, и я установить заголовки там:PHP устанавливает заголовок сам по себе

header("Content-Length: 20".$eol); 
header("MIME-Version: 1.0".$eol); 
header("Connection: Keep-Alive".$eol); 
header("Accept-Encoding: gzip, deflate".$eol); 
header("Host: host".$eol.$eol); 
header("Content-Type: multipart/related; boundary=boundary_.oOo._MzA3NjM=NTczNw==NDM1Ng==".$eol); 
echo $res; 

Я установил содержание длины, но когда я проверить мой сценарий на странице задает длину содержимого как strlen $res. В чем проблема?

EDIT Итак, я понимаю, что код верен. Проблема может быть в Web-сервере. (Я использую Apache)
EDIT $ eol = "\ r \ n".
EDIT

$res="--".$BOUNDARY.$eol; 
$res .= "Content-Type: application/json".$eol; 
$res .= "Content-Length: ".strlen("JSON").$eol.$eol; 
$res .= "JSON"; 
$res.=$eol.$eol; 
$res.="--".$BOUNDARY.$eol; 
$res.="Content-Type: image/jpeg".$eol; 
$res.="Content-Length: ".strlen("Image").$eol; 
$res.=$eol; 
$res.="Image"; 
$res.=$eol.$eol; 
$res.="--".$BOUNDARY.$eol; 
$res .= "Content-Type: application/octet-stream".$eol; 
$res .= "Content-Length: ".strlen("Vector").$eol; 
$res.=$eol; 
$res.="Vector"; 
$res .= $eol.$eol; 
$res .= "--".$BOUNDARY."--".$eol; 

Тело ответа следует использовать MIME. Java-кодер, который проверяет его, попросил меня установить длину контента, которая представляет собой сумму длины контента для каждого объекта.

+0

Возможно, ваш сценарий обрабатывает контент, основанный на вашем ECHO (отображение). –

+0

Вы уверены, что это PHP, а не веб-сервер или что-то еще дальше по цепочке, которая меняет его на правильное значение? –

+0

С быстрым взглядом на исходный код PHP я не могу найти места, которое бы это сделало .... –

ответ

1

Протокол HTTP следует принципу надежности, как описано в RFC1122, в котором говорится: «Будьте либеральны в том, что вы принимаете, и консервативны в том, что вы отправляете». В результате этого принципа HTTP-клиенты будут компенсировать и восстановить неправильные или неправильно сконфигурированные ответы или ответы, которые не подлежат анализу.

Source

Поскольку Вы отправили неверное значение Content-Length, Apache исправил это для вас.

+0

Итак, нет способа отключить его? –

+0

Зачем вам отправлять неправильный заголовок 'Content-length'? –

+0

Собираюсь внести некоторые изменения в мой вопрос. –

-1

Думаю, вам нужно показать больший кусок вашего кода. Что означает $ eol и является первой частью части эха? Если html плохо отформатирован, вещи, кажется, становятся предметом жонглирования. Я думаю, что это твоя проблема. Попробуйте использовать сайт или аддон html-тестера в своем браузере.

Смежные вопросы