0

我从另一个离开项目的程序员那里得到了这个软件。现在我遇到了一个问题,一些带有 GET 变量的 URL 不起作用我认为这是因为 # 所以这个 URL 看起来像这样。

www.domain.com/myvariable1/myvariable-#2

所以你可以看到 GET 变量只解析 'myvariable-' 所以#2 被切断了。我需要完整的“myvariable-#2”

我已经搜索了谷歌并花了几个小时来解决这个问题。请帮我。谢谢!


编辑:

所以我找到了这样做的解决方案。我使用 javascript 解析整个 URL,现在我可以从那里得到 # 之后的剩余字符串

谢谢你的所有答案。非常感谢!

4

3 回答 3

11

#开始一个片段标识符。片段是在客户端处理的,URI 的那部分甚至不会首先发送到服务器,所以你根本无法在那里处理它。

于 2013-10-14T02:52:15.713 回答
2

#...无法从 PHP中获取片段 ( )。似乎有一种方法可以用 javascript 做到这一点。请参阅使用 JavaScript 解析 URL 哈希/片段标识符

以防万一你在一个 Unix 机器上:你可以从这样的终端窗口运行ncnetcat ):

$ nc -l 8080

这会在端口 8080 上打开一个读取连接。现在您可以将这台机器上的浏览器连接到该端口并请求一个 URL,例如http://localhost:8080/foobar/baz.html#abcde. netcat 的输出标识了服务器看到的 URL:

GET /foobar/baz.html HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4

所以请求的路径/foobar/baz.html没有片段标识符(#abcde)。

于 2013-10-14T05:35:15.067 回答
0

正如其他人指出的那样,在 URL#中是片段标识符的分隔符。

如果#路径中包含一个字符,则必须对其进行正确编码:www.domain.com/myvariable1/myvariable-%232.

这样,服务器看到的路径将是myvariable1/myvariable-#2.

于 2013-10-15T12:12:51.103 回答