【问题标题】:URL with # -> file_get_contents/sockets cuts URL after the #带有 # 的 URL -> file_get_contents/sockets 在 # 之后剪切 URL
【发布时间】:2014-12-13 14:03:07
【问题描述】:

我已经寻找可能已经有我的答案的问题,但我没有找到那个具体的问题。

当我尝试获取 URL 中带有“#”的文件内容时,它会剪切 # 之后的部分。

例如:

我尝试获取http://steamcommunity.com/id/Schwabba/inventory/#730 的内容,但是当我尝试通过套接字或file_get_contents 下载它时,我得到的只是http://steamcommunity.com/id/Schwabba/inventory/

有人知道如何解决这个问题吗?

谢谢。

【问题讨论】:

    标签: php sockets url file-get-contents fragment-identifier


    【解决方案1】:

    URL 片段(散列后的 URL 的一部分)不是通过 HTTP 处理的,而是由浏览器来对它们做出一些判断。通常它们会被页面上运行的 Javascript 读取 - 在这种情况下 - 然后会进行进一步的 AJAX 调用以获取页面的其余部分。

    【讨论】:

      【解决方案2】:

      未转义的 # 是 URL 和片段之间的分隔符。片段不是 URL 本身的一部分,因此不包含在 HTTP 请求中。片段只对客户端有意义,对服务器没有意义。例如,当您在 Web 浏览器中输入 http://steamcommunity.com/id/Schwabba/inventory/#730 时,它会请求 http://steamcommunity.com/id/Schwabba/inventory/ 并呈现结果,如果结果是 HTML,则浏览器会跳转到 HTML <a> 标签所表示的部分,其 nameid 属性为730

      所以file_get_contents() 忽略片段是有道理的——它应该这样做。下载文件后,您必须决定如何处理片段。片段与正在下载的内容类型相关。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-30
        • 2020-09-14
        • 1970-01-01
        • 2016-09-28
        • 1970-01-01
        • 2021-12-28
        • 2017-03-03
        相关资源
        最近更新 更多