У меня есть URL-адрес /books
, в котором перечислены некоторые книги, и шаблон URL-адреса /books/{some-book-title}
, который показывает форму просмотра/обновления метаданных книги. Вот типичная история пользователя, в которой пользователь исправляет неправильную запись автора:
GET /books
<a href="/books/ulysses">Ulysses</a>
<a href="/books/don-quixote">Don Quixote</a>
GET /books/ulysses
<form action="/books/ulysses" method="post" enctype="application/x-www-form-urlencoded">
<input name="author" value="Jamessss Joycessss">
</form>
POST /books/ulysses FORMDATA author=James+Joyce
Redirect 303 SEE OTHER location = /books/ulysses
GET /books/ulysses
<form action="/books/ulysses" method="post" enctype="application/x-www-form-urlencoded">
<input name="author" value="James Joyce">
</form>
Проблема в том, что стек истории теперь
/books
/books/ulysses
/books/ulysses
так что, когда пользователь нажимает «назад», он не возвращается к /books
, а просто обновляет текущую страницу. Есть ли способ обработки случая обновления, не связанный с javascript, чтобы кнопка «Назад» имела ожидаемое поведение? И если нет, то как это исправить с помощью javascript?
РЕДАКТИРОВАТЬ: еще больше сбивает с толку, если вы публикуете несколько раз
GET /books
GET /books/ulysses author=Jamesss Joycesss
POST author=3 -> redirect shows author=3
POST author=2 -> redirect shows author=2
POST author=1 -> redirect shows author=1
Press back button /books/ulysses shows author=1
Press back button /books/ulysses shows author=2 (!!!)
Press back button /books/ulysses shows author=3 (!!!)
Press back button /books