【发布时间】:2010-11-25 10:59:00
【问题描述】:
我需要从请求中获取所有参数,包括“#”之后的参数。 例子: 请求:http://myserver/m#q=abc 我需要我的服务器获取“#”之后的所有参数,因为它们在“?”之后的位置。 我怎样才能做到这一点? 10倍, 科比
【问题讨论】:
我需要从请求中获取所有参数,包括“#”之后的参数。 例子: 请求:http://myserver/m#q=abc 我需要我的服务器获取“#”之后的所有参数,因为它们在“?”之后的位置。 我怎样才能做到这一点? 10倍, 科比
【问题讨论】:
RFC 1738 中提到的锚点或 URL 片段在请求资源时不会由客户端发送到服务器。基本原理是片段 URL 用于识别资源中的位置,而不是服务器上的不同资源。为了识别资源中的位置,客户端需要从服务器获取完整的资源,这个过程不需要涉及到片段信息的传输(因为它对服务器没有任何意义)。
如果您确实希望使用包含片段的 URL 通过查询字符串提交信息,则必须确保查询字符串位于 URL 片段之前。如果您自己构建请求,这可能是您的客户端代码中的错误。如果您负担得起,请将请求构造逻辑留给浏览器。
如果您确实希望将片段字符 (#) 发送到服务器,那么您需要在查询字符串中对其进行编码,否则客户端(浏览器)在发送向服务器请求。
关于 SO 的相关问题
【讨论】:
请记住,锚点是客户端概念,因此不应在服务器端使用它们。客户端不会将锚数据发送到服务器,因此您不能这样做。更好地使用 get 参数。
【讨论】:
你不能这样做。 URI spec 说:
对文档特定部分的引用(包括片段标识符)可能看起来像
http://www.myu.edu/org/admin/people#andy在这种情况下,字符串“#andy”不会发送到服务器,而是 由客户端保留并在整个对象已被使用时使用 检索到。
【讨论】: