我必须支持Play应用程序中的旧URL以及用于使用#而不是?传递参数的URL,例如mysite.com/?p#XXX而不是mysite.com/?p=XXX。 问题是Play忽略了hashtag之后的所有内容。没有参数传递,当我检查请求的URI时,我只得到一个在hashtag之前结束的子字符串:
request().uri()
仅提供:
mysite.com/?p
Play中是否有办法在服务器端获取其余的URL?
答案 0 :(得分:1)
这不是游戏问题。您将在浏览器中运行的任何内容中遇到此问题,因为片段只是客户端。 W3 states:
在他的一个XHTML页面中,Dirk创建了一个指向Nadia在Web上发布的图像的超文本链接。他创建了一个带有“http://www.example.com/images/nadia#hat”的超文本链接。 Emma在她的Web浏览器中查看Dirk的XHTML页面并按照链接进行操作。浏览器中的HTML实现从URI中删除片段并请求图像“http://www.example.com/images/nadia”。 Nadia提供图像的SVG表示(具有因特网媒体类型“image / svg + xml”)。 Emma的Web浏览器启动SVG实现以查看图像。它将包含片段“http://www.example.com/images/nadia#hat”的原始URI传递给此实现,从而导致显示帽子的视图而不是完整的图像。
请注意,Emma浏览器中的HTML实现不需要理解SVG片段的语法或语义(SVG实现也不必理解HTML,WebCGM,RDF ......片段语法或语义; 它只需从URI语法[URI]中识别#delimiter并在访问资源时删除片段)。这种正交性(第5.1节)是Web架构的一个重要特征;这使得Emma的浏览器无需升级即可提供有用的服务。
(强调我的)
我不确定您的旧应用程序是什么,但听起来它是一个javascript客户端应用程序。如果后端需要根据它们进行处理,则必须使用前端实际查询参数。
此外,我认为您的问题可能与广义上的this one重复。