Google은 페이지 해시 변경을 통해 상태 변경을 처리하는 웹 애플리케이션 (예 : example.com/#/page1
)을 개발 중입니다.Chrome : 해시 변경 사전 렌더링 사용 안함
최근에 프리 페치 옵션을 사용하면 Google 크롬 문제가 발생합니다 ('페이지로드 성능 개선을위한 네트워크 작업 예측'). 여러 경로 중에서 로그 아웃을 수행하는 #/logout
이 있습니다.
"정상"상태 인 경우 페이지 example.com/#/
(기본 페이지)에 있습니다. 그 다음에 "l"을 입력하면 (example.com/#/l
) 크롬 자동 완성은 logout
으로 자동 완성됩니다. 그러나 자동 완성 기능뿐 아니라 "haschange"이벤트도 호출하므로 클라이언트가 서버에 로그 아웃 요청을 보내고 있습니다 ... 심지어 l
을 입력하여도!
이 동작은 예상치 못한 일일뿐만 아니라 위험합니다. 설정 페이지 (기본적으로 사용 설정 됨)에서 '페이지로드 성능 개선을위한 네트워크 작업 예측'을 선택 취소하는 것 외에 Chrome에서이를 방지 할 수있는 방법이 있습니까?
편집
작은 새 "발견". 사실, Chrome은 이벤트 처리기에서 console.log가 실행되고 있지 않기 때문에 "hashchange"이벤트를 발생시키지 않습니다. Chrome은 #/logout
페이지를 방문하면 서버 (GET /auth/destroy
)에 대한 요청이 호출되므로 해당 요청을 단독으로 실행한다고 알았습니다. 우리가 이것을 막기 위해 무엇을 할 수 있습니까?
왜 아직도 해시 변경 이벤트를 사용하고 있습니까? 아직도 구 버전의 IE를 지원하고 있습니까? – epascarello
@epascarello IE 지원 때문이 아니라 질문의 범위를 벗어나는 다른 이유 때문입니다. GMail 자체는 결국 해시 변경 이벤트를 사용합니다. – Qualcuno
HTTPS를 사용하도록 설정하면 프리 패치가 사용 중지됩니다 (https://developers.google.com/chrome/whitepapers/prerender ). 그러나 다른 방법이 있는지 알면 좋습니다. – Qualcuno