Как правильно использовать «/» в части URL? - PullRequest
4 голосов
/ 30 июля 2010

В инфраструктуре MVC у меня есть модель с полем «идентификатор». Это поле может быть любым, используемым пользователем в качестве уникального идентификатора. Затем я использую это поле идентификатора в URL для доступа к соответствующим ресурсам.

/people/<identifier>/

В одном из таких случаев пользователь использует идентификаторы формата 00/000. Быстрый из вас сразу же обнаружит проблему - как мы узнаем, какая часть является идентификатором, а какая часть действием?

Очевидным решением является использование экранирования URL (% 2F является соответствующим кодом). Тем не менее, это сбивает с толку мой прокси-сервер балансировки нагрузки Apache, а также сервер приложений в нашем демонстрационном окне (работает пассажир). Хотя досадно, но это прекрасно работает на локальных серверах разработки. URL-адреса, включая% 2F, по-видимому, вызывают 404 ошибки на сервере (не в приложении!).

Мне нужен общий подход к решению этой проблемы при сохранении аккуратного URL.

Стек, вызвавший эту проблему: Ruby 1.8.7, Merb 1.0.12, балансировка нагрузки Apache для тонкого кластера на производстве, Passenger на демо-сервере и работа с тонкими без прокси на разработке.

Ответы [ 2 ]

4 голосов
/ 30 июля 2010

Самый простой способ - запретить пользователю вводить косую черту в первую очередь.Если необходимо поддерживать этот формат, то нет необходимости использовать экранирование URL.

1 голос
/ 30 июля 2010

Вы всегда можете использовать доморощенную кодировку, которая заменяет / другим символом, который никогда не используется в вашем поле идентификации, а затем преобразует его обратно при чтении из URL.

Например:

http://yoursite/people/00/000

становится

http://yoursite/people/00-000

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...