使用 Ruby 转义并下载 URL

发布于 2024-10-17 04:41:15 字数 471 浏览 3 评论 0原文

我尝试从 URL 下载 HTML 内容,但没有成功。

这是 URL:

http://example.com/some_string[value]

当使用 RestClient 时,我收到此错误:

URI::InvalidURIError: bad URI(is not URI?)

我从 Ruby on Rails IRC 获得了一些帮助。这个想法是转义 URL 的结尾。

$ "http://example.com/" + CGI::escape("some_string[value]")
=> "http://example.com/some_string%5Bvalue%5D"

生成的 URL 不起作用,我收到 404。 但它可以在浏览器中运行。

有人知道如何让它发挥作用吗?

I'm trying to download the HTML content from a URL without success.

Here is the URL:

http://example.com/some_string[value]

When use RestClient I get this error:

URI::InvalidURIError: bad URI(is not URI?)

I got some help from the Ruby on Rails IRC. The Idea is to escape the end of the URL.

$ "http://example.com/" + CGI::escape("some_string[value]")
=> "http://example.com/some_string%5Bvalue%5D"

The generated URL does not work, I'm getting a 404.
It works in the browsers though.

Anyone knows how to get it to work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吻泪 2024-10-24 04:41:15

根据 URI RFC

排除其他字符,因为网关和其他传输
众所周知,特工有时会修改这些字符,或者他们是
用作分隔符。

不明智=“{”| “}” | “|” | “\” | “^”| “[” | “]” | “`”

与排除的字符相对应的数据必须进行转义,以便
在 URI 中正确表示。

信任浏览器的响应或处理链接的能力是有风险的。他们会尽一切努力返回页面,而不是强制执行标准,因此无论页面或 URL 是否定义正确,他们都不是权威来源。

RestClient 的响应可能基于 URI,当我测试使用 URI 解析 URL 时,它返回了相同的错误。

我还没有见过使用未编码的“[”和“]”字符的URL。

According to the URI RFC:

Other characters are excluded because gateways and other transport
agents are known to sometimes modify such characters, or they are
used as delimiters.

unwise = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"

Data corresponding to excluded characters must be escaped in order to
be properly represented within a URI.

Trusting a browser's response or ability to handle a link is risky. They do everything they can to return a page, instead of enforcing the standards, so they are not authoritative sources whether a page or URL is correctly defined.

RestClient's response is probably based on URI's, which returned the same error when I tested parsing the URL using URI.

I haven't ever seen a URL using unencoded "[" and "]" characters.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文