Подтвердить что ты не робот

Javascript: Каков рекомендуемый способ передачи URL-адресов в качестве параметров URL-адреса?

Использование '& url =' + encodeURIComponent (url); для передачи URL-адреса от браузера к серверу будет кодироваться url, но когда он декодируется на сервере, параметры url интерпретируются как отдельные параметры, а не как часть одного параметра url.

Каков рекомендуемый способ передачи URL-адресов в качестве параметров URL-адреса?

4b9b3361

Ответ 1

encodeURIComponent() должен работать. Например,

'&url=' + encodeURIComponent("http://a.com/?q=query&n=10")

производит

"&url=http%3A%2F%2Fa.com%2F%3Fq%3Dquery%26n%3D10"

(у которого нет значения "&" или "?" в значении). Когда ваш сервер получает этот URL-адрес, он должен иметь возможность декодировать это, чтобы получить оригинал:

param["url"] = "http://a.com/?q=query&n=10"

Я не уверен, какой сервер вы используете (например, Rails, Django,...), но это должно работать "из коробки" в любой нормальной системе.

Ответ 2

Использование '& url =' + encodeURIComponent (url); для передачи URL-адреса от браузера к серверу будет кодироваться URL-адрес

Да, это то, что вы должны делать. encodeURIComponent - это правильный способ кодирования текстового значения для вставки части строки запроса.

но когда он декодируется на сервере, параметры url интерпретируются как отдельные параметры, а не как часть одного параметра url.

Тогда сервер действительно сломан. Если это действительно то, что происходит, вам нужно исправить его на сервере.

код

Ответ 3

Я не пробовал, но кодирование/декодирование BASE64 также должно работать.

Ответ 4

Используйте escape() для кодирования url, он будет кодировать амперсанды, чтобы этого не произошло.

Ответ 5

Честно говоря, пойдите с Google URL Shortener. Затем вы можете просто использовать код URL в строке запроса url: http://example.com/url/A7dh3

В своем приложении возьмите это и добавьте доменное имя Google URL Shortener и выполните перенаправление. Это добавляет отслеживание URL через Google Analytics. Много преимуществ в этом подходе. Просто короткий код и добавленные данные отслеживания тоже.