Страница HTTPS, возвращающая исходный текст и заголовок HTML, а не содержимое? - PullRequest
0 голосов
/ 24 февраля 2012

Я создаю веб-приложение с PHP и Python (на сайте есть SSL), и однажды очень долго, случайным образом, страница возвращает сообщение заголовка, за которым следует источник 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 изменяется случайным образом

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Либо Apache не распознает расширение .php и не запускает код через модуль PHP (в этом случае вы увидите ваш код PHP в браузере), либо тип содержимого имеет что-то не так, и поэтому браузер будет отображаться как текст вместо отображения. Единственное, о чем я могу подумать, - это то, что PHP иногда неправильно закрывает ответ.

1 голос
/ 24 февраля 2012

Вот простой код для разбора содержимого по частям:

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