브라우저:JavaScript만 사용하여 새로 고침 시 POST 데이터 재제출 방지
Post/Redirect/Get에 관한 많은 질문을 알고 있습니다.이건 좀 달라요.이 특정 JavaScript 솔루션을 설명하는 답변을 찾을 수 없습니다.
POST를 통해 폼을 전송한 후 새로 고침 버튼을 누르면 브라우저에 데이터를 다시 전송하라는 메시지가 나타납니다.그러나 이 프롬프트는 WordPress 백엔드(JS가 활성화된 경우)에서 발생하지 않으며 POST 후에 Redirect/Get이 표시되지 않습니다.
저는 이걸 아래 스크린샷으로 보여드리려고 노력했어요.페이지상에 POST 데이터가 인쇄된 최초의 POST 송신지가 표시되고, 그 후 새로고침에 의해 브라우저의 재송신 프롬프트가 표시되지 않고 GET이 발생합니다.
JavaScript를 비활성화하고 refresh를 누르면 예상된 "Would you like to resubmit your data?" 프롬프트가 표시되고 새로 고침으로 인해 두 번째 POST가 발생합니다.
따라서 워드프레스는 새로 고침/돌아가기 버튼에서 POST 데이터가 다시 제출되는 것을 방지하기 위해 JavaScript 마법을 실행하고 있습니다.
JavaScript만으로 이것을 실현하는 방법을 나타내는 WordPress의 코드를 가르쳐 주실 수 있습니까?어디서부터 찾아야 할지 모르겠어요.
푸시스테이트에 무슨 조치를 취했나요?
감사합니다!
솔루션:WordPress의 용도window.history.replaceState
모든 페이지를 로드합니다.
이로 인해,POST
새로 고침 또는 뒤로 버튼으로 다시 실행할 수 없습니다.
니프티!
WordPress 이외의 개념 실증: https://dtbaker.net/files/prevent-post-resubmit.php
코드는 다음과 같습니다.
<script>
if ( window.history.replaceState ) {
window.history.replaceState( null, null, window.location.href );
}
</script>
언급URL : https://stackoverflow.com/questions/45656405/browser-prevent-post-data-resubmit-on-refresh-using-only-javascript
'programing' 카테고리의 다른 글
$rootScope를 사용하지 않고 angular ui 라우터를 사용하여 stateChange 방지 (0) | 2023.03.07 |
---|---|
외부 React에서 컴포넌트 상태 업데이트(서버 응답 시 (0) | 2023.03.07 |
next.js에서의 포트 설정 방법 (0) | 2023.03.07 |
프로펠러 변경 시 Re-render React 구성 요소 (0) | 2023.03.07 |
componentWillReceiveProps가 아닌 라이프 사이클 메서드 getDerivedStateFromProps를 사용하는 방법 (0) | 2023.03.07 |