ruby - 转义 URL(没有双重转义)

标签 ruby url browser

如何根据需要对 URL 进行转义而不进行双重转义?

是否有 Ruby 库已经可以做到这一点?我想知道 WebKit 或 Chrome 使用什么算法。

两个例子:

  • 此 URL 无效,因为 % 未转义:http://x.co/op&k=21%。如果您将它键入 URL 栏,它就会知道将其转义。 (它在幕后转义了 '%',对吧?)

  • 如果您在浏览器中键入 http://localhost:3000/?s=hello%20world,它知道转义 % 20 再次。

我想重用已经处理过浏览器必须处理的边缘情况的优秀代码。如有必要,我不介意调用外部库。

更新:是的,我知道 URI.parse .无需向我展示语法。我的问题比那更难。

最佳答案

到目前为止,获胜者是:

  • Addressable::URI#normalize :“返回规范化的 URI 对象。注意:此方法并不试图完全符合规范。它的存在主要是为了纠正其他人阅读规范的失败,并处理缓存问题,因为几个不同的 URI 可能代表相同的资源并且不应多次缓存。”

  • Addressable::URI.heuristic_parse :“将输入转换为 URI。输入不必是有效的 URI——该方法将使用试探法来猜测 URI 的目的。这不符合标准,只是对用户友好。”

关于ruby - 转义 URL(没有双重转义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11718983/

相关文章:

javascript - 拖放图片上传并删除 URL(不是文件)

javascript - 像 Facebook 一样禁用带有叠加层的滚动

ruby - 如何使用 vagrant 1.7.2 在 Windows 7 x64 上 vagrant up(使用 puphpet)?

ruby - 在(最新版本的)Ruby 中递增整数(使用 +=)线程安全吗?

Firefox 中的 CSS3 @font-face 根据 URL 前缀变化

javascript regexp,从某种类型的 url 中选择

javascript - 异步脚本执行顺序

browser - WebRTC - 如何同步媒体流

ruby - 为什么 ruby​​ 定义变量,即使它从不执行变量赋值代码?

ruby-on-rails - Mailgun 帐户注册后很快就被禁用