문제

브라우저가이를 무시하고 이전에 표시된 페이지를 계속 표시하는 HTTP 응답을 할 수 있습니까?

다음 시나리오를 의미합니다.

a) 사용자는 무언가를 클릭합니다

b) 일부 게시물은 서버로갑니다 (또는 얻을 수 있지만 더 흥미로운 게시물을 고수합시다)

c) 서버는 어떤 이유로이 시점에서 회신을 보내고 싶지 않다고 결정합니다.

d) 서버는 특별히 제작 된 응답을 보냅니다

e) 브라우저는 오류 페이지를 표시하지 않고, 빈 페이지를 표시하지 않으며, 어디서나 리디렉션되지 않으며 다시로드하지 않습니다. 사용자가 양식을 제출 한 적이없는 것처럼 표시 한 내용을 계속 표시합니다.

추신 : 물론 그것은 Ajax로 포장 할 수 있지만, 베어 밴이 자바 스크립트가 아닌 솔루션이 가능한지 묻습니다.

도움이 되었습니까?

해결책

HTTP 204 콘텐츠가 없음을 반환 해보세요. 이 응답 코드의 설명을 참조하십시오 RFC 2616 (하이퍼 텍스트 전송 프로토콜 -HTTP/1.1) 말하는 곳 :

클라이언트가 사용자 에이전트 인 경우 문서보기를 변경하지 않아야합니다. 이 응답은 주로 사용자 에이전트의 활성 뷰에 새롭거나 업데이트 된 메타 인식을 적용해야하지만, 사용자 에이전트의 활성 문서보기를 변경하지 않고 작업에 대한 입력을 허용하기위한 것입니다.

다른 팁

이것은 일반적으로 호출되는 방법입니다 Ajax. 필요합니다 자바 스크립트, 그리고 xmlhttprequest 기능.

편집 : 바닥에 'PS'가 발견되었습니다. 그만큼 204 응답 다른 답변에서 제안 된 것은 유효한 비 JavaScript 솔루션 인 것처럼 보입니다.

당신이 그렇게한다고 가정 해 봅시다.

사용자는 무엇을합니까? 물론 양식을 다시 제출하십시오.

여러번.

그런 다음 사이트가 고장 났다고 결정하고 떠납니다.

이를 위해 JavaScript가 필요하다고 생각합니다. 요청을 보낼 수 있으며 서버 응답에 따라 JavaScript가 실제 페이지의 새로 고침/재 장전을 피하기 위해 거짓을 반환 할 수 있습니다.

나는 204 응답에 대해 잘 모르겠지만, 아마도 당신은 서버 측에서 그것을 할 수 있습니다.

이를 수행하는 또 다른 방법 (JavaScript)은 요청이 전송 된 직후에 거짓으로 반환하는 것입니다. 서버 응답 (AJAX)에 따라 실제 페이지를 수정하거나 사용자를 다른 페이지로 보낼 수 있습니다.

아니요. HTTP 프로토콜은 요청-응답 주기로 구성됩니다. 서버는 응답하지 않기로 결정할 수 없지만 (가능하지만, 프로토콜을 깨고 오류를 저지르고 있습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top