我需要在遵循所有重定向后从网站检索最终标头集。根据{{3}}中的评论,get_headers应该遵循重定向。但是,我在phpfiddle.org和我自己的服务器上使用url" PHP documentation"进行了测试。 (PHP 5.x)
$r = get_headers('http://microsoft.com', 0);
var_dump($r);
结果:
array(18) {
[0]=>
string(30) "HTTP/1.1 301 Moved Permanently"
[1]=>
string(38) "Content-Type: text/html; charset=UTF-8"
[2]=>
string(35) "Location: http://www.microsoft.com/"
[3]=>
string(25) "Server: Microsoft-IIS/8.5"
[4]=>
string(21) "X-Powered-By: ASP.NET"
[5]=>
string(35) "Date: Thu, 14 Jan 2016 19:55:58 GMT"
[6]=>
string(17) "Connection: close"
[7]=>
string(19) "Content-Length: 148"
[8]=>
string(15) "HTTP/1.0 200 OK"
[9]=>
string(14) "Server: Apache"
[10]=>
string(51) "ETag: "6082151bd56ea922e1357f5896a90d0a:1425454794""
[11]=>
string(44) "Last-Modified: Wed, 04 Mar 2015 07:39:54 GMT"
[12]=>
string(20) "Accept-Ranges: bytes"
[13]=>
string(20) "Content-Length: 1020"
[14]=>
string(23) "Content-Type: text/html"
[15]=>
string(35) "Date: Thu, 14 Jan 2016 19:55:59 GMT"
[16]=>
string(17) "Connection: close"
[17]=>
string(6) "X-N: S"
}
知道为什么这不起作用,以及如何使其发挥作用?
我知道它没有完全遵循重定向,因为如果您输入网址:http://microsoft.com,则最终会显示http://microsoft.com。并且您可以看到标题不包含重定向到此处。
我需要这个工作的原因:我需要确定最终页面是否设置了X-Frame-Options标头。 http://www.microsoft.com/en-us和http://microsoft.com页面都没有此标头,但http://www.microsoft.com/页面会返回X-Frame-Options标头,从而阻止在iframe中加载页面。
我需要通过检查此标头来确定是否可以在iframe中加载相关页面,如果没有,我需要将用户重定向到目标,而不是在iframe中显示该页面。
由于
答案 0 :(得分:2)
#8c9eff
确实遵循重定向。仔细检查转储标头时,您会注意到该数组包含两个响应标头集:
这是第一个:
get_header
第二个:
array(18) {
[0]=>
string(30) "HTTP/1.1 301 Moved Permanently"
[1]=>
string(38) "Content-Type: text/html; charset=UTF-8"
[2]=>
string(35) "Location: http://www.microsoft.com/"
[3]=>
string(25) "Server: Microsoft-IIS/8.5"
[4]=>
string(21) "X-Powered-By: ASP.NET"
[5]=>
string(35) "Date: Thu, 14 Jan 2016 19:55:58 GMT"
[6]=>
string(17) "Connection: close"
[7]=>
string(19) "Content-Length: 148"
从http://www.microsoft.com到http://www.microsoft.com/en-us的最终重定向可能是特定于语言的,并且取决于 [8]=>
string(15) "HTTP/1.0 200 OK"
[9]=>
string(14) "Server: Apache"
[10]=>
string(51) "ETag: "6082151bd56ea922e1357f5896a90d0a:1425454794""
[11]=>
string(44) "Last-Modified: Wed, 04 Mar 2015 07:39:54 GMT"
[12]=>
string(20) "Accept-Ranges: bytes"
[13]=>
string(20) "Content-Length: 1020"
[14]=>
string(23) "Content-Type: text/html"
[15]=>
string(35) "Date: Thu, 14 Jan 2016 19:55:59 GMT"
[16]=>
string(17) "Connection: close"
[17]=>
string(6) "X-N: S"
}
请求标头(当我在浏览器中打开相同的网址时,我最终会在{{ 3}})。