Существует сценарий, который получает другой url как параметр GET:
script.php?file=http://www.google.com&id=123
Проблема в:
когда url имеет сам параметр, он используется как параметр скрипта, а не параметр url:
script.php?file=http://www.google.com?q=adsf&lang=en&id=123
URL-адрес: http://www.google.com?q=adsf&lang=en
, но он прерывается после &
, потому что он рассматривается как связанный с script.php
.
Что я могу сделать по этому поводу?
Я устал заменять &
с %26
, но url сломался.
Вам нужно закодировать значение с помощью процентного кодирования .
Если вы используете PHP, используйте rawurlencode
(или urlencode
если ожидается приложение / x-www-form-urlencoded ):
$url = 'http://www.google.com?q=adsf&lang=en'; echo 'script.php?file='.rawurlencode($url);
Вам нужно, чтобы URL-адрес кодировал весь URL-адрес, который вы передаете в качестве параметра, другому URL-адресу (ваш скрипт). % 26 – правильная кодировка для &. Просто убедитесь, что вы его декодируете на сервере, прежде чем использовать его. Вы не говорите, какой язык (ы) вы используете, но большинство, в том числе javascript и php, имеют собственные функции кодирования URL-адресов.
Попробуйте кодировать каждый специальный символ следующим образом:
script.php?file=http%3a%2f%2fwww.google.com%3fq%3dadsf%26lang%3den&id=123
хотя было бы лучше и проще использовать rawurlencode()
.
Кроме того, прочитайте это о кодировке URL.