programing

Chrome에서 Ajax 동기화 요청 실패

javamemo 2023. 9. 27. 16:48
반응형

Chrome에서 Ajax 동기화 요청 실패

Chrome의 최신 릴리스로 Synchronous Ajax 호출이 중지되었습니까?Synchronous Ajax 호출 중 오류가 발생합니다.최신 Chrome 버전인 73.0.3683.103으로 업데이트한 후 문제가 발생했습니다.현재 파이어폭스와 IE에서는 동기 호출이 정상적으로 작동합니다.우리는 아래의 에러를 얻고 있습니다.

메시지: "'XMLHtpRequest'에서 '보내기'를 실행하지 못했습니다.'경로...': 페이지 해제 시 동기화 XHR"을 로드하지 못했습니다. 이름: "NetworkError"

누가 Ajax Synchronous 호출이 작동할 수 있는 해결책을 제안해 줄 수 있나요?동기화 호출에 확실히 의존해야 하는 기능이 있습니다.

예, Chrome에서는 최근에 페이지 종료 이벤트 중에 동기식 ajax를 허용하지 않았습니다(예:beforeunload그리고.unload Chrome에서는 더 이상 그렇게 할 수 없습니다.업데이트:v73 및 v74에서 다시 실행할 수 있지만 v75 v80(2020년 2월)에서 다시 실행될 예정입니다.이 문제의 재미를 따라보세요. (그 문제를 찾아주셔서 감사합니다.)

현재의 대안은 를 사용하는 것입니다. 를 사용하면 브라우저가 페이지에서 멀리 이동하면서도 서버에 무슨 일이 일어나고 있는지 알려줄 수 있습니다.이것은 페이지를 기각하는 데 도움이 되지 않습니다.그러나 이는 POST일 뿐이며, 페이지 해제를 보류하지 않기 때문에 페이지 해제 보류에 의존하는 사용 사례는 작동하지 않을 것입니다.

두 분 모두 감사합니다. 크라우더와 찰리엇플.비콘을 사용하면 문제가 해결됩니다.

누군가가 해결책을 찾고 있다면, 이를 따를 수 있습니다 - http://qnimate.com/sending-data-to-server-on-page-unload/

비콘은 경우에 따라 정상적으로 작동하지만, 사용자 지정할 수 있는 것으로 매우 제한되어 있다는 것을 알게 되었습니다(헤더를 설정할 수 없음으로 인해 사용 사례가 손상됨).다른 옵션은 다음을 사용하는 것입니다.fetch그리고.keepalive참으로 설정된 플래그다음 링크에 따라:

keepalive 옵션은 요청이 요청을 시작한 웹 페이지보다 오래 지속될 수 있음을 나타냅니다.

window.onunload = function() {
  fetch('/analytics', {
    method: 'POST',
    body: "statistics",
    keepalive: true
  });
};

비동기식이지만 비콘 전송도 마찬가지입니다.구글이 이 변경을 강요하고 로딩 전에 무언가가 완료되도록 하고 싶은 많은 사용 사례를 어기는 것에 짜증이 날 뿐입니다.

언급URL : https://stackoverflow.com/questions/55676319/ajax-synchronous-request-failing-in-chrome

반응형