0

我正在开发一个实现法拉第来构建 URL 的库的分支。

site = "https://example.io/#/"
path = "oauth/authorize"
connection = Faraday.new(site)
resource = Faraday::Utils.URI(path)
URL = connection.build_url(resource)

请注意,我的网站 URL 以 hashbang 结尾。但是当上面的代码被执行时,法拉第完全去掉了 hashbang:

https://example.io/oauth/authorize

但是我的应用程序需要它来构建这个 URL(带有 hashbang):

https://example.io/#/oauth/authorize

现在在我撕掉法拉第和猴子修补一些可怕的东西之前......我可以通过在法拉第上设置一个选项来做到这一点吗?

4

2 回答 2

2

我认为这里的答案是放弃尝试在 Faraday 中保留 URL 的哈希部分,因为 HTTP 请求会忽略该部分。

URL 的散列部分(也称为 URI“片段标识符”)永远不会发送到服务器。它只能在客户端中有意义。通常,当 HTTP 客户端是 Web 浏览器时,片段标识符包含要滚动到的元素的名称。或者,可以通过一些 JavaScript 交互来使用 hashbang 技巧。

但是在 Faraday 中使用这样的 URL 是没有意义的,因为哈希部分无论如何都不会被发送到服务器。

于 2015-05-24T08:46:33.407 回答
0

在路径变量中使用“#”而不是站点变量,我将得到您需要的输出。

site = "https://example.io/"
path = "#/oauth/authorize"
connection = Faraday.new(site)
resource = Faraday::Utils.URI(path)
URL = connection.build_url(resource)

请尝试上面的代码并让我知道结果。

于 2015-05-24T08:03:41.833 回答