Почему скрытые поля используются?

Я всегда видел множество скрытых полей, используемых в веб-приложениях. Я работал с кодом, который написан для использования множества скрытых полей и значений данных из видимых полей, отправляемых туда и обратно. Хотя я не понимаю, почему используются скрытые поля. Я почти всегда могу придумать способы решения той же проблемы без использования скрытых полей. Как скрытые поля помогают в дизайне?

Может кто-нибудь сказать мне, что именно дает преимущество скрытых полей? Почему скрытые поля используются?

8 ответов

Решение

Скрытые поля - самый простой способ, поэтому они используются довольно часто.

Альтернативы:

  • хранение данных в сеансе на стороне сервера (с сессионным cookie)
  • хранение данных на стороне транзакции на сервере (с идентификатором транзакции в качестве единого скрытого поля)
  • используя URL-путь вместо скрытых параметров запроса поля, где это применимо

Основные проблемы:

  • Нельзя доверять значению скрытого поля, чтобы не подделывать его от страницы к странице (в отличие от серверного хранилища)
  • большие данные необходимо публиковать каждый раз, это может быть проблемой, и для некоторых данных это невозможно (например, загруженные изображения)

Основные преимущества:

  • нет липких сессий, которые проливаются между страницами и несколькими окнами браузера
  • очистка на стороне сервера не требуется (для просроченных данных)
  • доступны для клиентских скриптов

Предположим, вы хотите редактировать объект. Теперь полезно поместить идентификатор в скрытое поле. Конечно, вы никогда не должны полагаться на это значение (т.е. убедитесь, что пользователь имеет соответствующие права на insert / update).

Тем не менее, это очень удобное решение. Отображение идентификатора в видимом поле (например, текстовое поле только для чтения) возможно, но раздражает пользователя.

Хранение идентификатора в сеансе / файле cookie запрещено, поскольку запрещает одновременное открытие нескольких открытых окон редактирования и накладывает ограничения на время жизни (тайм-аут сеанса приводит к нарушению операции редактирования, что очень раздражает).

Использование URL возможно, но нарушает правила проектирования, т.е. использует POST при изменении данных. Кроме того, поскольку он виден пользователю, он создает более ужасные URL-адреса.

Наиболее типичное использование, которое я вижу / использую, - это идентификаторы и другие вещи, которые действительно не обязательно должны быть на странице по любой другой причине, кроме той, которая необходима в какой-то момент для отправки обратно на сервер.

-дит, следовало бы включить больше деталей-

скажем, например, у вас есть какой-то объект, который вы хотите обновить - пользовательский интерфейс отправляет обратно коллекцию значений, и сервер в этот момент может знать или не знать "эй, это объект клиента", поэтому вы запускаете запрос к серверу и скажите "эй, дайте мне ID 7", и теперь у вас есть объект клиента, как его знает система. Обновления применяются, проверяются, что угодно, и теперь ваш пользовательский интерфейс получает завершенный результат.

Я думаю, что хорошим оправданием / аргументом является использование linq. Попробуйте обновить объект в linq, не получая его сначала из БД. Он не имеет ни малейшего представления, что это то, что он может отслеживать, пока вы не получите полный объект.

Вот одна из причин, удобный способ передачи данных между клиентским кодом (javascript) и серверной стороной.

Он хранит вещи вне URL (как в строке запроса), поэтому сохраняет их в чистоте. Он также не допускает в сеанс вещи, которые не обязательно должны быть там.

Кроме этого, я не могу думать о многих других преимуществах.

Есть много полезных сценариев.

Одним из них является "сохранение" некоторых данных на странице, которые не должны быть введены пользователем. Например, сохраняйте идентификатор пользователя при создании страницы, тогда это значение будет автоматически отправлено вместе с формой обратно на сервер.

Еще один сценарий - это безопасность. Добавьте какой-нибудь скрытый токен на страницу и проверьте его наличие на сервере. Это поможет определить, была ли форма отправлена ​​через браузер или каким-либо ботом, который только что разместил URL-адрес на вашем сайте.

Если вы используете скрытое поле в форме, вы увеличиваете бремя формы, добавляя новый элемент управления.

Если нет необходимости брать скрытое поле, вы не должны его брать, потому что оно не подходит по соображениям безопасности. использование скрытого поля не подпадает под хорошее программирование. Потому что это также влияет на производительность приложения.

Они обычно используются для хранения состояния по мере развития взаимодействия. Вместо этого можно использовать файлы cookie, но некоторые люди их отключают. Можно также использовать одно скрытое поле для указания на состояние на стороне сервера, но есть проблемы с сессией.

Другие вопросы по тегам