[英]mysterious data on http response on php
我為 php 寫了一個輕量級的 http 庫,除了響應超過一定大小外,一切正常。 該請求是使用 stream_socket_client 發出的。
一切正常,直到響應主體包含更大的數據,然后在數據中插入某種填充,例如:
f7c [{key: value}, {key: value}, {key: value}, {key: value}... 1000 {key: value}, {key: value}, {key: value}, ... ] 1000
在這個例子中,中間和末尾的“f7c”和“1000”不在原始響應體中
解析響應的代碼:
private function parseInputStream($stream){
$header = [];
$body = "";
$isHeaderParsed = false;
while (!feof($stream)) {
$line = fgets($stream, 1024);
if (!$isHeaderParsed){
if ($line === "\r\n"){
$isHeaderParsed = true;
continue;
} else {
array_push($header, str_replace("\r\n", "", $line));
}
} else {
$body .= $line;
}
}
$this->parseHeader($header);
$this->parseBody($body);
}
這些價值觀來自哪里的任何想法?
雖然你沒有顯示你發送了什么請求和什么響應 header 你得到我的猜測是你發送了一個HTTP/1.1
請求並且響應 header 包含Transfer-Encoding: chunked
chunked 。 在這種情況下,請求主體不是長度由Content-length
header 定義的單個部分,而是請求主體以多個塊發送,每個塊都以其十六進制長度為前綴。 有關詳細信息,請參閱標准的相關部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.