【问题标题】:URL with # -> file_get_contents/sockets cuts URL after the #带有 # 的 URL -> file_get_contents/sockets 在 # 之后剪切 URL
【发布时间】:2014-12-13 14:03:07
【问题描述】:
【问题讨论】:
标签:
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> 标签所表示的部分,其 name或id 属性为730。
所以file_get_contents() 忽略片段是有道理的——它应该这样做。下载文件后,您必须决定如何处理片段。片段与正在下载的内容类型相关。