HttpServletRequest获取请求参数用#而不是?

时间:2014-12-30 19:48:04

标签: spring-mvc servlets querystringparameter

我正在尝试使用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

,则可以正常工作

有没有办法解决这个问题?我必须使用#selected查询参数。哪个属性将包含oauth-callback之后的数据?

1 个答案:

答案 0 :(得分:2)

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

来自RFC 3986

  

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

......和(强调我的)

  

片段标识符在信息检索中具有特殊作用      系统作为客户端间接引用的主要形式,      允许作者专门识别现有的方面      资源只由资源所有者间接提供。的作为      这样,片段标识符不用于特定于方案      处理URI;相反,片段标识符是分开的      来自解除引用之前的其余URI ,因此      识别片段本身内的信息被解除引用      完全由用户代理完成,无论URI方案如何。