Как безопасно объединить сегменты относительных URL-адресов?

Я пытаюсь найти надежный метод объединения частичного пути URL сегменты вместе. Есть ли быстрый способ сделать это?

Я пробовал следующее:

puts URI::join('resource/', '/edit', '12?option=test')

Ожидаю:

resource/edit/12?option=test

Но получаю сообщение об ошибке:

`merge': both URI are relative (URI::BadURIError)

Я использовал File.join () в прошлое для этого, но что-то не кажется правильным в использовании библиотеки файлов для URL-адресов.

29
задан the Tin Man 17 January 2012 в 22:12
поделиться

1 ответ

Мое понимание URI::join - то, что это думает как веб-браузер, делает.

Для оценки его укажите умственный веб-браузер на первый параметр и продолжайте нажимать на ссылки, пока Вы не просмотрите к последнему параметру.

, Например, URI::join('http://example.com/resource/', '/edit', '12?option=test'), Вы просмотрели бы как это:

, Если бы первая ссылка была /edit/ (с запаздывающей наклонной чертой), или /edit/foo, то следующая ссылка была бы относительно /edit/, а не /.

Эта страница возможно объясняет это лучше, чем я могу: , Почему URI.join таким образом парадоксален?

0
ответ дан 28 November 2019 в 01:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: