Я загружаю файл 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 или какой-то другой формой кодирования.