Описываемая вами ситуация может быть объяснена - хотя нет никакого способа узнать, если вы не сообщите нам, что такое строка, и как она используется, по адресу http : //me.com?url=http://you. com? qp = 1, который включает в себя два уровня вложенных значений, похожих на you.com.
Рассмотрим URL-адрес, содержащий параметр запроса, который является другим URL-адресом:
http://me.com?url=http%3A%2F%2Fyou.com%3Fqp%3D1
Этот URL-адрес подвержен неправильной интерпретации, поэтому мы обычно URL-кодируем URL- url
адрес, предоставляя нам:
http%3A%2F%2Fyou.com%3Fqp%3D1
Тот, кто работает с этим URL-адресом, теперь может извлекать параметр запроса url
с именем you.com
, декодировать его (часто фреймворк или библиотека расшифровывает его для вас), а затем использовать его для перехода или вызова этого URL-адреса.
Рассмотрим, однако, тот случай, когда сам ?qp=1
URL имеет параметр запроса, а не как приведенный в первом примере, а скорее то, что само по себе должно быть закодировано в URL. Чтобы все было просто, мы просто используем «cat? Pictures». Нам нужно было бы закодировать это, сделав параметр запроса?qp=cat%3Fpictures
Другими словами, этот URL-адрес будет
http://me.com?url=http%3A%2F%2Fyou.com%3Fqp=cat%3Fpictures
Если мы просто используем это как есть, тогда весь наш URL-адрес становится
http://me.com?url=http://you.com?qp=cat?pictures
К сожалению, если мы сейчас декодируем это наивным образом, мы получим
url
Другими словами, вложенной URL декодирован, а это означает , что он будет думать , что URL имеет два paramters запроса, а именно url
и qp
. Чтобы успешно справиться с этой проблемой, нам нужно еще раз закодировать второй параметр запроса,
http://me.com?url=http%3A%2F%2Fyou.com%3Fqp%3Dcat%253Fpictures
Обратите внимание, однако, что если вы используете встроенные инструменты и библиотеки языка или среды для обработки параметров запроса, большинство из них произойдет автоматически и не позволит вам беспокоиться об этом.
Симптом начинает отображаться только тогда, когда я использую редактор wysiwyg с открытым исходным кодом
Редактор просто помещает символы в файл. Очень сложно представить, что редактор вызывает проблему, о которой вы говорите, если, возможно, один редактор не настроен на использование смарт-кавычек, например, что в значительной степени нарушит все, что связано с кавычками.