0

我正在使用 PHP 和 Python(该站点具有 SSL)构建一个 Web 应用程序,并且在很长一段时间内,页面会随机返回标题消息,然后是 HTML 源,而不是显示页面的内容。

这种情况有时会在我加载页面的每 30 次中发生一次,或者在其他时间发生一次,大约为 500 次。

这也是非常随机的。

其他时候它渲染得很好。

这是标题的样子:

HTTP/1.1 200 OKServer: Apache/2.2
Content-Type: text/html; charset=UTF-8
Date: Wed, 22 Feb 2012 10:40:33 GMT
Transfer-Encoding: chunked
Connection: Keep-Alive

66c2

随机66c2变化

4

2 回答 2

2

Apache 无法识别 .php 扩展名并且没有通过 PHP 模块运行代码(在这种情况下,您会在浏览器中看到您的 PHP 代码),或者内容类型有问题,因此浏览器会punt 并将其显示为文本而不是渲染它。我唯一能想到的另一件事是 PHP 有时没有正确关闭响应。

于 2012-02-24T03:16:57.627 回答
1

这是一个解析块内容的简单代码:

//
// Unchunk http content.  Returns unchunked content on success,
// false on any errors...  Borrows from code posted above by
// jbr at ya-right dot com.
//
function unchunkHttpResponse($str=null) {
    if (!is_string($str) or strlen($str) < 1) { return false; }
    $eol = "\r\n";
    $add = strlen($eol);
    $tmp = $str;
    $str = '';
    do {
        $tmp = ltrim($tmp);
        $pos = strpos($tmp, $eol);
        if ($pos === false) { return false; }
        $len = hexdec(substr($tmp,0,$pos));
        if (!is_numeric($len) or $len < 0) { return false; }
        $str .= substr($tmp, ($pos + $add), $len);
        $tmp  = substr($tmp, ($len + $pos + $add));
        $check = trim($tmp);
        } while(!empty($check));
    unset($tmp);
    return $str;
}
于 2012-02-24T03:18:17.627 回答