Как закодировать URL для передачи его в качестве параметра GET - PullRequest
0 голосов
/ 20 апреля 2010

Я загружаю файл JavaScript, который принимает URL-адрес текущей страницы в качестве параметра. Вот код, который я использую:

document.write(unescape('%3Cscript src=\"' + _vis_opt_protocol + 'domain.com/js.php&a='+account_id+'&url='+encodeURIComponent(document.URL)+'&random='+Math.random()+'\" type=\"text/javascript\"%3E%3C/script%3E'));

Я думал, что encodeURIComponent сделает правильное кодирование URL. Однако при загрузке файла JS браузеры также интерпретируют закодированный URL-адрес. Например, если document.URL равен http://example.com/?test=1#nono, то браузер интерпретирует тест как другой параметр для JS и ничего не отправляет после (и в том числе) #nono, потому что считает его привязкой.

Каков наилучший способ кодирования URL-адреса, чтобы он передавался на сервер как есть? Я также играл с base64 или какой-то другой формой кодирования.

1 Ответ

2 голосов
/ 20 апреля 2010

Проблема в том, что вызываемая вами функция unescape отменяет работу encodeURIComponent. Вы можете попробовать это:

document.write('<script type="text/javascript" src="' + _vis_opt_protocol + 'domain.com/js.php&a=' + account_id + '&url=' + encodeURIComponent(document.URL) + '&random=' + Math.random() + '"><\/sc' + 'ript>');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...