Как сказать Фарадею сохранить хэш-банг в URL сайта?

Я работаю над развилкой библиотеки, которая реализует Фарадей для создания URL.

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

Обратите внимание, что URL моего сайта заканчивается хешбангом. Но когда приведенный выше код выполняется, Фарадей полностью удаляет hashbang:

https://example.io/oauth/authorize

Но мое приложение требует, чтобы он построил этот URL (с хэшбэнгом):

https://example.io/

Теперь, прежде чем я вырву Фарадея и залатываю обезьяны что-нибудь ужасное... могу ли я сделать это, установив опцию на Фарадее?

2 ответа

Решение

Я думаю, что ответом здесь будет прекращение попытки сохранить хеш-часть URL в Фарадее, так как эта часть игнорируется для HTTP-запросов.

Хеш-часть URL (также известная как URI "идентификатор фрагмента") никогда не отправляется на сервер. Это может иметь значение только в клиенте. Как правило, когда HTTP-клиент является веб-браузером, идентификатор фрагмента содержит имя элемента, на который нужно перейти. Или, трюки hashbang могут быть использованы с некоторыми взаимодействиями JavaScript.

Но использовать такие URL-адреса в Фарадее не имеет смысла, потому что часть хеша никогда не будет отправлена ​​на сервер в любом случае.

Имея '#' в переменной пути вместо переменной сайта, я получаю вывод, как вам нужно.

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

Пожалуйста, попробуйте приведенный выше код и дайте мне знать результат.

Другие вопросы по тегам