PHP自己设置标头

时间:2015-04-23 08:56:14

标签: php header

我在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;

我设置了内容长度,但是当我检查脚本时,页面将内容长度设置为$res的strlen。有什么问题?

编辑因此我理解代码是正确的。问题可以在Webserver中。 (我正在使用Apache)
编辑 $ eol =“\ r \ n”。
编辑

$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编码器要求我设置内容长度,即每个实体的内容长度之和。

2 个答案:

答案 0 :(得分:1)

  

HTTP协议遵循RFC1122中描述的健壮性原则,其中规定"在您接受的内容中是自由的,在您发送的内容中是保守的"。由于这一原则, HTTP客户端将补偿和恢复错误或配置错误的响应,或者不可缓存的响应。

Source

因为您发送的Content-Length值不正确,所以Apache已经为您更正了。

答案 1 :(得分:-1)

我认为您需要显示更大的代码块。 $ eol包含什么,并且是回声的一部分的第一部分?如果html的格式很糟糕,那么事情就会变得很糟糕。我想这是你的问题。在浏览器上试用html测试版网站或插件。