包含哈希信息的file_get_contents


file_get_contents with Hash Information Included

我尝试了许多方法来尝试获取url的内容,散列影响输出。我真的不知道如何解释它,但这里有一个例子…

做:

echo file_get_contents('test.com/whatever.php?t1=1&t2=2#this');

将返回与

相同的结果
echo file_get_contents('test.com/whatever.php?t1=1&t2=2');

即使我在浏览器中导航到它,它也会产生影响。当然,上面的url不是我实际使用的,但我希望你能明白。

我尝试过的事情:

旋度:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
file_get_contents:

file_get_contents($url);

从文件中读:

//don't know where I put the code.

这些都是我尝试过的,除了这里,我真的不知道下一步该去哪里。我真的不确定这是否可能,但我希望它是。

谢谢你的帮助,sh042067

哈希值不发送到服务器。哈希部分通常只能由浏览器访问。您可能会看到某种AJAX检索在起作用,因此您需要找出正在调用的实际URL并使用它。您可以使用Firebug。

找到参考:http://en.wikipedia.org/wiki/Fragment_identifier

检查这些

为什么URL的哈希部分不在服务器端?

我可以在服务器端应用程序(PHP, Ruby, Python等)上读取URL的哈希部分吗?

您的响应将是相同的,因为哈希是在客户端处理的,而不是在服务器端

引自维基百科

片段标识符的功能与URI的其余部分不同:即,它的处理完全是客户端,没有来自服务器的参与——当然,服务器通常会提供帮助来确定MIME类型,而MIME类型确定碎片的处理。当一个代理(比如Web浏览器)从Web服务器请求资源时,代理将URI发送到Web服务器服务器,但不发送片段。相反,代理等待服务器发送资源,然后代理处理资源根据文档类型和片段值。

哈希部分(称为'片段')永远不会发送到服务器。在HTTP协议中没有有效的方法来做到这一点。片段仅用于在页面内的导航,但浏览器请求和接收相同的数据,而不管。

一些站点用JavaScript管理片段,发出异步请求来加载新数据和动态更改页面,这在一定程度上模糊了界限。

在你的情况下,你必须找到有一个id="this"的页面上的HTML元素,因为这是片段点,它是浏览器将向下滚动到的地方。或者,如果你得到一个片段,看起来像查询变量,你必须找到你试图请求的真实的,非javascript URL。