URL, выходящий в ruby - PullRequest
       4

URL, выходящий в ruby

10 голосов
/ 03 января 2012

Существует много дискуссий по поводу экранирования URL в Ruby, но, к сожалению, я не нашел подходящего решения.

В общем, URI.escape должен делать эту работу, но, похоже, он не поддерживает всесимволы, например, это не экранирует "[".

URI.parse(URI.escape("1111{3333"))  

работает хорошо.

URI.parse(URI.escape("1111[3333"))

вызывает исключение.

Я понимаю, что "["не является допустимым символом в URL согласно RFC, но когда я ввожу его в браузер, он берет его и отображает страницу, поэтому мне нужно точно такое же поведение.

Знаете ли вы какое-нибудь готовое решение для побега в Ruby?

Ответы [ 2 ]

16 голосов
/ 03 января 2012

Я обычно использую

CGI.escape

для экранирования параметров URI.

require 'cgi'. 

CGI.escape('1111[3333')
=> "1111%5B3333" 
3 голосов
/ 08 апреля 2013

Символ [является символом-разделителем uri и не требует экранирования.

http://www.ietf.org/rfc/rfc2396.txt раздел 2.4.3.Исключенные символы US-ASCII

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