Форма отправки с использованием Java - PullRequest
0 голосов
/ 06 октября 2011

У меня есть страница входа в JSF 1.2 (login.xhtml), которая имеет 2 подформы - menuForm, loginForm.

Используя браузер, я могу перейти со страницы входа на страницу productList.xhtml, нажав кнопку «Вход» в форме loginForm.

....

Чтобы разрешить Google Crawler сканировать мои страницы, требующие входа в систему, я пытаюсь проверить отправку формы с помощью Java-программы в loginForm, чтобы выяснить, могу ли я получить страницу productList.xhtml.

Скрытые поля (Просмотр источника из браузера) на странице login.xhtml включают следующее: имя пользователя пароль автопрокрутка LoginForm loginButton javax.faces.ViewState

Я отправил все значения из приведенных выше (за исключением javax.faces.ViewState) в мою Java-программу, но я продолжаю получать только страницу login.xhtml в своем ответе. Почему это?

Я не могу отправить javax.faces.ViewState, потому что на стороне сервера нет состояния для формы, когда происходит передача из программы Java. Как отправить форму, которая еще не имеет состояния просмотра?

1 Ответ

1 голос
/ 06 октября 2011

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

Для входа в систему требуется сеанс (в основном: cookie). Но веб-сканеры не поддерживают сеанс (в основном: они не поддерживают куки). Так что это заканчивается здесь. Вы должны удалить форму входа и заменить все навигационные командные ссылки обычными ссылками, чтобы любой веб-сканер проиндексировал ваши страницы.

Кстати, помимо меня, вы хотели бы сделать страницы с ограниченным доступом сканируемыми (таким образом: общедоступными). Почему логин там в первую очередь?


Я отправил все значения из приведенного выше (кроме javax.faces.ViewState) в мою Java-программу, но я продолжаю получать только страницу login.xhtml обратно в своем ответе. Почему это?

Потому что вы пропустили поле состояния просмотра. JSF не будет обрабатывать отправку формы. С одной стороны, это защита от CSRF-атак, а с другой стороны, потому что JSF - это основанная на компонентах инфраструктура MVC.


Я не могу отправить javax.faces.ViewState, потому что на стороне сервера нет формы для формы, когда происходит передача из программы Java. Как отправить форму, которая еще не имеет состояния просмотра?

Вам необходимо либо поддерживать сеанс (в основном: отправлять все куки с сервера обратно в последующих запросах), либо установить метод сохранения состояния в web.xml на client и , которые вам также необходимы передать скрытое поле состояния просмотра вместе с запросом на отправку формы.

...