Вы используете method="POST"
в своем теге формы.Итак, вы пытаетесь создать страницу со строкой запроса (область URL) и телом формы (область FORM), верно?
Я не уверен, что это лучший метод или даже допускается некоторыми браузерами (Я читал в другом месте, они будут разбирать строки запроса на действия POST).
Лучшим решением может быть выполнение действия либо GET, либо POST, и цикл по строке запроса, делающий каждый элемент скрытым вводом?
<cfloop list="#CGI.query_string#" delimiters="&" index="i">
<input
type='hidden'
name='#listFirst(i, "=")#'
value='#listLast(i, "=")#'
/>
</cfloop>
Как вы говорите, вы не можете этого сделать.Ваш конкретный вопрос заключался в том, следует ли вам бежать.Ответом будет «да», и местоположение будет на бэкэнде, анализируя строку запроса.
<cfoutput>
<form action='?#CGI.query_string#' method='POST' class='form-horizontal bordered-group' role='form' id='test'>
<input
class='form-control'
type='text'
name='formvar'
/>
<input
class="btn btn-primary btn-lg btn-block"
type="submit"
value="Submit"
/>
</form>
</cfoutput>
Отправит форму на ту же страницу с присутствующей областью ФОРМА, URLприсутствует область действия и определена строка CGI.query_string.CGI.query_string будет иметь форматирование URL (% 20 для пробела и т. Д.).Области FORM и URL уже будут декодированы (% 20 преобразован в пробел и т. Д.).
Похоже, суть вашего вопроса на самом деле касается безопасности и очистки.В этом случае вы захотите проверить encodeForHTML()
( Adobe Docs для encodeForHTML () ).
Очевидно, что это не на 100% надежно, так как я не знаюдетали вашего кода и что вы делаете с вводом.Но эти функции очистки должны быть хорошим началом.
Так что в общем случае, если вы используете область действия URL, используйте encodeForHTML()
, а если вы используете #CGI.query_string#
, она будет закодирована в URL.