2012-02-24 97 views
0

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

这种情况有时会发生一次,每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随机变化

+1

是的,你的网页被分块:传输编码:分块 – Sean 2012-02-24 03:11:37

+0

那么究竟会是平均值,应该怎样理想地转入? – steve 2012-02-24 03:16:04

回答

2

要么Apache不承认.php扩展,并没有运行通过PHP模块的代码(在这种情况下,你会在浏览器中看到你的PHP代码),否则内容类型会出现问题,因此浏览器将打开并显示为文本而不是呈现它。我唯一能想到的另一件事情是,PHP有时不能正确地关闭响应。

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; 
} 
相关问题