如何告诉法拉第在网站网址中保留hashbang?

时间:2015-05-24 07:23:33

标签: ruby url faraday faraday-oauth

我正在开发一个实现Faraday构建URL的库的分支。

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

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

  

https://example.io/oauth/authorize

但我的应用程序要求它构建此URL(使用hashbang):

  

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

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

2 个答案:

答案 0 :(得分:2)

我认为这里的答案是退出尝试在法拉第中保留URL的哈希部分,因为HTTP请求会忽略该部分。

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

但是在法拉第中使用这样的URL并不合理,因为哈希部分永远不会被发送到服务器。

答案 1 :(得分:0)

在路径变量中使用'#'而不是站点变量我可以根据需要获得输出。

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

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