HTTPS页面返回HTML源代码和标题而不是内容?

时间:2012-02-24 03:02:59

标签: ssl https rackspace-cloud http-1.1

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

有时我会在每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随机更改

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

这是一个解析chunk-ed内容的简单代码:

//
// 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;
}