【问题标题】:Parsing and encoding URL before sending to Rest webservice在发送到 Rest webservice 之前解析和编码 URL
【发布时间】:2013-09-06 12:34:56
【问题描述】:

我正在开发一个应用程序,我正在使用它向 REST Web 服务发送获取请求 @RequestMapping(value = "myURLpattern", method = RequestMethod.GET, produces = "image/png")

我遇到了一个错误,如果有人在 URL 查询字符串中输入 # 它会从那里中断 http://myserver.com:8080/csg?x=1&y=2#4&z=32&p=1

所以我尝试通过过滤器HTTPRequestWrapper 对其进行编码,以便使用URLEncoder# 替换为%23

我的问题是编码 URL,首先我需要阅读 URL(request.getRequestURL())。 并且 getURL 在 # 之后再次无法读取字符串。 request.getRequestURL() 将只返回 (http://myserver.com:8080/csg?x=1&y=2)

在发送到 REST Web 服务之前,还有其他方法可以解析完整的 url 并对其进行编码吗?

【问题讨论】:

    标签: java rest url-encoding


    【解决方案1】:

    这不是错误。检查这个:

    What is the meaning of # in URL and how can i use that?

    url查询字符串中的#是错误的。您应该在客户端对其进行编码,然后再将其发送到您的服务器。看到这个:How to pass '#' in query string 它在 asp 中,但你应该找到 java 等价物。

    让你开始的东西可以是这个Java URL encoding of query string parameters

    【讨论】:

    • 感谢您的参考,因此如果有人在序列号:12#ser4 等 Html 字段之一中输入#,那么我们无法在服务器端解析它。 myserver.com:8080/… 对于上述场景我们将如何处理它
    • 在客户端对其进行编码。看看 javascriopt 中的 encodeURIComponent 函数。 encodeURIComponent('12#ser4');会使 '12#ser4' 变成 '12%23ser4' 这就是你应该发送到服务器的内容,所以你的请求看起来像这样:myserver.com:8080/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2013-09-07
    • 2016-04-27
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多