加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

一种以宽容的方式在Ruby中标准化URI / URL的方法

发布时间:2020-12-17 02:18:27 所属栏目:百科 来源:网络整理
导读:我正在尝试找到一种方法从用户获取URI / URL字符串并确定一个有效的规范形式(如果资源无效则失败).同时,它还应验证URL是否存在.所以我们正在检查有效的“语法”和存在. 例如,像google.com这样的字符串应该转换为http://www.google.com,像google.com/insights
我正在尝试找到一种方法从用户获取URI / URL字符串并确定一个有效的规范形式(如果资源无效则失败).同时,它还应验证URL是否存在.所以我们正在检查有效的“语法”和存在.

例如,像google.com这样的字符串应该转换为http://www.google.com,像google.com/insights这样的字符串应该变成http://www.google.com/insights.像http://thiswebsitedoesntexistatall.com这样的字符串应该返回某种错误或异常.

我相信解决方案的一部分可能正在调用HTTP get_response()方法并在重定向之后直到我获得200 OK状态.

似乎URI.parse()方法不能原谅掉掉http.我意识到我可以写一个简单的事情来尝试在前面添加http等等,但我希望有一些现有的gem或鲜为人知的库函数可以真正宽容URL并为我规范它们.

内置的net / http和HTTParty似乎对我正在寻找的东西过于严格.有一个很好的方法来做到这一点?

解决方法

您要求的是一些问题:

>当FTP和许多其他protocols同样有效时,URL解析器不应假定传入的值是HTTP.如果您知道协议可能是HTTP,那么您需要添加协议.
>如果您尝试连接到某个站点并按照重定向直到获得200响应,那么您只能证明该URL解析为某种有效页面. 200可能是一个错误页面返回,因为你想要的是一个死链接或无效,或该网站暂时关闭.为了证明其他方式,您必须对您正在寻找的页面有一些亲密的预知识,例如要搜索的特定内容.
>假设您遵循重定向后URL很好,则不太安全.许多网站都将各种会话数据添加到URL中,因此可以从一个简单而干净的URL开始,可以解决一个漫长而复杂的URL.

我建议你看看Addressable::URI宝石.它比Ruby的URI更全面.它不会为您做出决定,但至少它会为您提供更完整的API并可以重写/规范化URL.清理它们和/或确定它们是否良好仍然可以作为锻炼.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读