【问题标题】:get_headers() not returning Content-Length elementget_headers() 不返回 Content-Length 元素
【发布时间】:2014-12-09 09:40:37
【问题描述】:

当我在域中进行更改时,函数get_headers() 不会提供具有相同索引的数组。何时以及为什么会发生这种情况?

我想要数百个域的 Content-Length 值。我需要进行哪些更改?

<?php
$url = 'http://www.ecomexpomelbourne.com.au/sponsors/';
echo "<pre>";
$domain_data[] = array();
$domain_data = get_headers( $url, 1 );
print_r($domain_data);
echo $domain_data['Last-Modified'];
?>

当用于当前页面 url 时,我得到 Content-Length 索引

【问题讨论】:

  • 可能与您的服务器配置有关。
  • 你的服务器没有发送 Content-Length 所以没有什么可以得到
  • 没有这样的标题...requestable.pieterhordijk.com/4rCuvc
  • @PeeHaa 当我对这​​个网页使用 get_headers 时,我得到了结果,因为我已经编辑了我的问题。
  • 是的,但这不是您要获取的域...

标签: php get-headers


【解决方案1】:

有时服务器只是不发送Content-length 标头,您应该预料到并正确对待这种情况,因为RFC2616 中有这样的规定。

在某些情况下,当页面是动态生成的(使用PHP或其他语言)时,在发送headers的阶段,body的长度是未知的,因此服务器无法生成正确的Content-length 提前标头。但也有cases when the Content-length header is explicitly forbidden to be sent

【讨论】:

  • 是的 Content-Length 我得到了一页。
  • 如果我没有得到,有没有其他方法可以得到这个?
  • 您可以使用filesize() 并将URL 传递给它。但也要注意,它会产生一些网络开销,因为它将获取整个页面以获取其长度。
  • filesize() 使用时会报错Warning: filesize(): stat failed for http://www.ecomexpomelbourne.com.au/sponsors/ in D:\xampp
  • @Penny,看看我上面给你的链接中filesize()函数描述下的第二条评论。
【解决方案2】:

PWS 已经过时了,请改用 IIS。我不确定 PWS 是否允许配置响应标头,并且我找不到任何文档。这是它现在发送的内容:

Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Tue, 09 Dec 2014 09:46:13 GMT
Expires:Mon, 08 Dec 2014 09:46:13 GMT
Server:PWS/8.1.20.5
Set-Cookie:www.ecomexpomelbourne.com.au_trackingData=; path=/
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
X-Px:nc h0-s4.p1-hyd ( h0-s2.p6-lhr), nc h0-s2.p6-lhr ( origin)

没有内容长度

【讨论】:

    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 2016-09-30
    相关资源
    最近更新 更多