在MVC框架中,我有一个带有“标识符”字段的模型。该字段可以是用户用作其唯一标识符的任何字段。然后,我在URL中使用此标识符字段来访问相关资源。
/people/<identifier>/
在一个这样的情况下,用户正在使用格式为00/000
的标识符。您之间的快速将立即发现问题 - 我们如何知道哪个部分是标识符,哪个部分是行动?
显而易见的解决方案是使用URL转义(%2F是相关代码)。但是,这会混淆我的apache负载平衡代理以及我们的演示盒(运行乘客)上的应用程序服务器。虽然烦人地在本地开发服务器上工作正常。包含%2F的URL似乎会导致来自服务器的404错误(不是应用程序!)。
我正在寻找的是解决此问题的一般方法,同时保持整洁的URL。
导致此问题的堆栈是:Ruby 1.8.7,Merb 1.0.12,Apache负载平衡到生产中的瘦集群,演示服务器上的Passenger,以及在开发时使用未经处理的瘦。
答案 0 :(得分:4)
最干净的方法是防止用户首先输入正斜杠字符。如果有必要支持这种格式,则无法使用URL转义。
答案 1 :(得分:1)
您可以随时使用自行编码替换/在您的识别字段中从未使用过的其他字符,然后在从URL中读取时将其转换回来。
例如:
变为