Getting Post - Redirect - Обновить страницу вызова перенаправления, а не оригинальный запрос - PullRequest
1 голос
/ 27 октября 2008

У нас есть процедура POST для базы данных PL / SQL, которая (a) выполняет некоторые операции с базой данных на основе параметров POST и (b) перенаправляет пользователя на страницу с результатами.

Проблема в том, что когда пользователь «обновляет» браузер страницы результатов, у которой все еще есть исходный запрос, он вызывает процедуру базы данных и повторно отправляет параметры.

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

Есть ли способ указать браузеру установить URL для перенаправления вызова, а не исходный запрос пользователя? Вероятно, это будет либо в самом редиректе, либо в Javascript на целевой странице.

Ответы [ 2 ]

1 голос
/ 27 октября 2008

Каноническое решение довольно хорошо описано в Википедии. См. Post / Redirect / Get . Вы хотите, чтобы код, обрабатывающий POST, перенаправлялся в GET по завершении работы, так как обновление GET не будет повторно передавать данные формы.

1 голос
/ 27 октября 2008

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

Например, для HTTP-сервера Apache необходимо указать флаг принудительного перенаправления в mod_rewrite: http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...