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
'programing' 카테고리의 다른 글
XML에서 Elements(요소) 또는 Attribute를 사용해야 합니까? (0) | 2023.09.27 |
---|---|
Python 문자열에서 알파벳이 아닌 문자를 모두 제거합니다. (0) | 2023.09.27 |
다중 삽입 쿼리를 준비할 때 오류가 발생했습니다. (0) | 2023.09.27 |
산술 연산의 왼쪽과 오른쪽은 'any', 'number' 또는 열거형이어야 합니다. (0) | 2023.09.27 |
왜 jQuery를 두번 선언합니까? (0) | 2023.09.27 |