Отправленные формы не кодируют + при использовании method = "get" - PullRequest
2 голосов
/ 06 марта 2012

со следующей формой

<form target="dialogiframe" action="ConfigUpdate.cvx" id="TestForm" 
    name="TestForm" method="get">
    <input name="test" type="text" size="40" value="A Sum 1+2=3"/>
    <input type="submit" value="Set" />
</form>

параметры введенного запроса кодируются следующим образом

test=A+Sum+1+2=3

после того, как он будет декодирован, он дает неверное значение "A Sum 1 2= 3 ", так как + в параметре не закодирован (равно как и =), и он преобразуется в пробел.

если я изменю метод на публикацию, тогда параметры будут правильно кодироваться как

test=A+Sum+1%2B2%3D3

и затем корректно преобразуется.

Я знаю, что должен использовать POST, и действительно перебираю свои страницы и конвертирую их, но я что-то упускаю в определении формы, чтобы заставить GET кодировать правильность?

Протестировано с IE8 и FF10, страницы в

1 Ответ

2 голосов
/ 06 марта 2012

Я считаю, что это известная проблема с использованием GET в качестве метода формы.Как правило, вы должны использовать метод POST с вашими формами.

From: http://www.cs.tut.fi/~jkorpela/forms/methods.html

В официальных рекомендациях говорится, что «GET» следует использовать в том и только в том случае, если обработка формы выполняетсяидемпотент, что обычно означает чистую форму запроса.Как правило, это целесообразно.Однако существуют проблемы, связанные с длинными URL-адресами и набором символов, не относящихся к ASCII, что может привести к необходимости использовать «POST» даже для идемпотентной обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...