HTML: предотвратить URL-кодирование формы POST - PullRequest
3 голосов
/ 25 февраля 2011

У меня есть HTML-форма, которая должна быть размещена на URL.Я хотел бы, чтобы форма POST одна переменная с именем DATA, например, так:

DATA: somevar=someval&somevar2=someotherval

У меня проблемы с этим.Кажется, по умолчанию формы urlencode данных, в результате чего:

DATA: somevar%3Dsomeval%26somevar2%3Dsomeotherval

Изменение типа enc типа "text / plain" приводит к:

DATA: somevar=someval
SOMEVAR2: someotherval

Есть ли способУ меня может быть форма на самом деле просто отправить данные, как указано выше?

Ответы [ 3 ]

8 голосов
/ 26 марта 2014

Я не уверен, какова ваша цель в этом посте, и не поможет ли решение проблемы кодирования URL формы POST действительно решить ваши проблемы.

Но на самом деле, предотвращение кодирования URL формы на 100% возможно, просто добавьте

enctype="text/plain"

атрибут для формы.

Ниже приведен пример запроса без текста / обычного текста и еще одного запроса.

LMint-PC droope # nc -kl 80
POST / HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 168

%7B%22JobTypeIdentifier%22%3A3%2C%22ScheduledStart%22%3Anull%2C%22ScheduleType%22%3A%22Recurring%22%2C%22JobInputP
meters%22%3A%5B%5D%2C%22ignoreParam%22%3A%22=%22%7D^C
LMint-PC droope # ^C
LMint-PC droope # nc -kl 80
POST / HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: text/plain
Content-Length: 116

{"JobTypeIdentifier":3,"ScheduledStart":null,"ScheduleType":"Recurring","JobInputParameters":[],"ignoreParam":"="}
0 голосов
/ 25 февраля 2011

Нет, вы не можете делать то, что пытаетесь сделать. И вы, вероятно, не должны пытаться. Тот факт, что вам нужны некоторые данные внутри переменной с именем DATA, означает, что ваша полезная нагрузка POST (или строка запроса GET) будет выглядеть как

DATA=somevar%3Dsomeval%26somevar2%3Dsomeotherval

Если это было (как вы хотите, чтобы это было), как

DATA=somevar=someval&somevar2=someotherval

это будет означать:

DATA имеет значение 'somevar = someval'

somevar2 имеет значение 'someotherval'

Это потому, что каждая переменная имеет вид VARIABLE_NAME = VALUE, и они разделены знаком '&'.

Проверьте это самостоятельно в своем любимом браузерном отладчике (я использую встроенные инструменты разработчика firebug и chrome). Итак, вопрос: почему вы пытаетесь это сделать? Зная, что вам будет легче помочь в достижении ваших целей.

РЕДАКТИРОВАТЬ: пример был неправильным

0 голосов
/ 25 февраля 2011

try HTTP BUILD BUERY

update

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

HTML-сущность-декодирования

...