如何根据需要对 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/