Как экранировать символы точки в URL - PullRequest
1 голос
/ 08 мая 2020

Добрый день!

У меня есть URL-адрес, допустим,

http://someurl.com?someparam=my.dot.param

Я знаю, что точка («.» - символ) является допустимым символом HTTP-запроса, но по некоторым причинам я нужно экранировать его с помощью "% 2E"

Я хотел использовать что-то вроде EscapedPath () , но, как я упоминал ранее, точка ("." - символ) является допустимым символом HTTP-запроса, поэтому я не смог этого сделать.

Что я сделал.

1) Я удаляю все точки в строке « my.dot.param » с помощью некоторой константы (например, «_remove_this_dot_»), поэтому я получаю « my_remove_this_dot_dot_remove_this_dot_param »

2) После получения конечного URL:

u.RawQuery = q.Encode()
retURL := u.String()

Я делаю

result :=  strings.ReplaceAll(retURL, "_remove_this_dot_", "%2E")

Все работает, но код выглядит ужасно - есть ли способ исправить это? Может быть, со стандартной библиотекой?

PS Извините за мой плохой англи sh.

1 Ответ

1 голос
/ 08 мая 2020

Иногда требуется ужасный код для обхода ошибок в одноранговых узлах сети.

Более простой подход к этому в вопросе - заменить . в необработанном запросе, где необработанный запрос создается со значением включая ..

q.Set("someparam", "my.dot.param")
u.RawQuery = strings.ReplaceAll(q.Encode(), ".", "%2E")
result := u.String()

Запускать на детской площадке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...