簡體   English   中英

http 上的神秘數據 php 上的響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM