0

我正在尝试使用 javax.servlet.http.HttpServletRequest 对象从以下 URL 获取控制器中的查询字符串参数:

http://example.com:8080/OAuthClient/oauth-callback#access_token=something&expires_in=1209600&username=abcuser

它不起作用,因为它由 # 而不是 ? 分隔

因此,如果我将请求更改为http://example.com:8080/OAuthClient/oauth-callback?access_token=something&expires_in=1209600&username=abcuser

有没有办法解决这个问题?我必须使它与 # 分隔的查询参数一起工作。哪个属性将包含 oauth-callback 后的数据?

4

1 回答 1

2

这些不是查询参数。它们是 URI 的片段——根本不会发送到服务器。它只能在客户端使用。

来自RFC 3986

片段标识符组件由数字符号 ("#") 字符的存在指示,并以 URI 的结尾终止。

...和(强调我的)

片段标识符在信息检索系统中作为客户端间接引用的主要形式具有特殊的作用,它允许作者专门识别仅由资源所有者间接提供的现有资源的各个方面。 因此,片段标识符不用于 URI 的特定于方案的处理;相反,片段标识符在解引用之前与 URI 的其余部分分开,因此片段本身的标识信息仅由用户代理解引用,而与 URI 方案无关。

于 2014-12-30T19:50:58.757 回答