В чем цель __EVENTVALIDATION __VIEWSTATE в aspx?

Рассмотрим:

Content-Disposition: form-data; name="__VIEWSTATE"

/wEPDwUKMTQxNzIxMTc0MQ9kFgICAw8WAh4HZW5jdHlwZQUTbXVsdGlwYXJ0L2Zvcm0tZGF0YWRkflsROmXoLo8ar8ukWWYDh1Wr2BCwmhiAAqpX/xwqLq8=

Content-Disposition: form-data; name="__EVENTVALIDATION"

/wEWBgKJ1KD6AwKH3P+GBQLr/4HeAgKWoZqyCQLinqurDALt3oXMA0YLgb/Mt6KGihl+8ixYoY9A24wgHGGoPAINhuyP7nEl

Мы создаем сайт, на котором пользователи могут загружать фотографии. Позже мы решили, что пользователи могут также загружать фотографии через другие приложения, и нам нравится иметь единый интерфейс. Таким образом, другие приложения работают с одной и той же страницей.

Мы замечаем, что мы не можем загружать фотографии, если не знаем значения __EVENTVALIDATION и __VIEWSTATE.

Конечно, приложение может просто загружать загружаемое изображение, но это может быть проблемой.

Что это такое? Есть ли способ загружать изображения в aspx upload web, не указав что-то?

Ответ 1

HTTP - это протокол без сохранения состояния, который означает, что клиент и сервер не имеют встроенного способа отслеживания состояния приложения от одного запроса к другому. Чтобы обойти это, были изобретены различные технологии, такие как куки. ViewState и проверка событий - это две методики, используемые ASP.NET для создания полноценного состояния веб-страницы.

Данные в ViewState - это состояние всех элементов управления (поля ввода, флажки и т.д.), Когда они были отправлены клиенту. Когда форма отправляется обратно на сервер, ASP.NET может определить, изменил ли пользователь какие-либо значения в любом из полей, и может вызвать события, отражающие это (CheckedChanged, например, в флажке). Без ViewState сервер не сможет определить, изменились ли какие-либо поля.

Проверка событий гарантирует, что события, возникающие на клиенте, происходят из элементов управления, представленных ASP.NET.

Вот статья о ViewState и , которая посвящена проверке событий.