【问题标题】:file_get_contents with Hash Information Included包含哈希信息的 file_get_contents
【发布时间】:2012-01-05 08:31:10
【问题描述】:

我尝试了许多方法来尝试获取 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。

【问题讨论】:

    标签: php hash file-get-contents


    【解决方案1】:

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

    一些网站使用 JavaScript 管理片段以发出异步请求以加载新数据并动态更改页面,这有点模糊了界限。

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

    【讨论】:

      【解决方案2】:

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

      引自wikipedia

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

      【讨论】:

        【解决方案3】:

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

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

        也检查这些

        Why the hash part of the URL is not in the server side?

        Can I read the hash portion of the URL on my server-side application (PHP, Ruby, Python, etc.)?

        【讨论】:

          猜你喜欢
          • 2011-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-28
          • 1970-01-01
          • 2016-10-04
          相关资源
          最近更新 更多