【问题标题】:HttpServletRequest getting request parameters separated by # instead of?HttpServletRequest获取请求参数用#分隔而不是?
【发布时间】:2014-12-30 19:48:04
【问题描述】:

我正在尝试使用 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 后哪个属性会包含数据?

【问题讨论】:

  • 你为什么必须?这将违反 URI 规范。

标签: spring-mvc servlets querystringparameter


【解决方案1】:

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

来自RFC 3986

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

...和(强调我的)

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

【讨论】:

    猜你喜欢
    • 2017-03-21
    • 2017-03-11
    • 2011-12-27
    • 2012-03-14
    • 2010-09-16
    • 2012-02-09
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多