2016-06-09 3 views
0

Для кодирования URL, я имею в виду это (http://www.w3schools.com/tags/ref_urlencode.asp), мой вопрос предназначен для кодирования URL-адресов, должен ли я кодировать param1=<xxx>&param2=<yyy> в целом или кодировать только xxx и yyy частей? Или я должен кодировать param1=<xxx> и param2=<yyy> отдельно? Благодарю.Подробности кодирования URL-адреса

http://hostname/func?param1=<xxx>&param2=<yyy> 

спасибо заранее, Лин

ответ

0

Если кодировать все после того, как?

  • вы должны сделать 1 расшифровывать, чтобы получить полную строку
  • После этого, вы сможете получить доступ к parameteres если нет запутанных caracters (вы не могли бы возникнуть проблемы, если у вас есть = в значения, как не будут никакого различия между = для значения PARM разделителя или внутри значения)

Если вы закодировать Params только

  • вам придется декодировать каждое значение
  • вы сможете получить доступ к вашему значению Param straigh прочь без проблем, как только декодируются (не Probleme, если значения содержат =)

Это почему я советовал бы кодировать значения только, чтобы убедиться, что не имеет какой-либо путаница с = в качестве разделителей значений параметра и закодированных значений:

= в значении будет закодировано, так что = вы найдете после? будет только для разделителя

let говорит, что вы все кодируете после? :

Нет проблем: Р1 = "ABC" Р2 = "123"

Р1 = аЬс & Р2 = 123 => кодируются => Р1 = аЬс & Р2 = 123 => декодируется => Р1 = аЬс & P2 = 123

Проблема: P1 = "а & Ь = с" P2 = "12" (маловероятно, но, скажем, это происходит)

P1 = а & Ь = с & P2 = 12 => закодированных = > P1 = a & б = с & P2b = 12b = 3a => декодируется => P1 = а & Ь = с & P2 = 12 (сервер будет видеть 3 параметра, если вы пытаетесь получить доступ к GET Params: P1 = а, Ь = с, P2 , = 12)

+0

Спасибо Жюльен, проголосуйте за ваш ответ. Я не разрабатываю код на стороне сервера, и я несу ответственность только за отправку Http-запроса на существующие http-серверы (например, google, yahoo и т. Д.), И на самом деле мой вопрос - это то, что является стандартным способом кодирования (чтобы стандартный сервер google и yahoo могли бы принять), вы отвечаете на мой вопрос, и кажется, что любой способ будет работать? Другой вопрос, когда вы упоминаете «1 декодирование, чтобы получить полную строку», для полной строки, какую часть вы имеете в виду? :) –

+1

полная строка = все после?, Которая включает имена и значения параметров –

+1

Я бы сказал, что оба пути должны работать, но это зависит от поведения сервера. Обычно params shoudl хорошо отформатирован для прямого доступа к ним: пример в PHP Get ['Name'] вернет значение имени param Если вы кодируете все после?, То это, вероятно, сломает родной GET ['ParamName' ] или POST ['ParamName'] функции –

Смежные вопросы