prosource

Ajax 게시물이 Firefox에 의해 중단됨(Chrome 또는 IE에는 표시되지 않음)

probook 2023. 8. 21. 21:25
반응형

Ajax 게시물이 Firefox에 의해 중단됨(Chrome 또는 IE에는 표시되지 않음)

파이어폭스를 사용할 때, 내가 가진 Ajax 게시 요청이 Firebug에서 중단된 것으로 보고되고 있습니다.아약스 게시물은 IE와 크롬에서 잘 작동합니다.도메인 간 요청이 아닙니다.저는 fiddler를 사용하여 문제를 살펴보았고, fiddler가 웹 트래픽을 캡처할 때(https를 해독하도록 설정된 옵션 포함) 게시물이 작동합니다.모든 Firefox에서 Ajax를 통해 전송하는 데이터를 성공적으로 게시하려고 하므로 로컬 개발 환경에서 게시 문제를 만들 수 없습니다.왜 피들러가 작동하는 동안 게시물이 작동하는지 아십니까?그것이 어떻게 작동하는지에 대한 아이디어를 얻을 수 있을 것입니다.

$.ajax({
            type: 'POST',
            url: '/Save',
            data: JSON.stringify(dataset),
            datatype: "html",
            contentType: "application/json",
            success: function (data, textStatus, jqXHR) {
                //alert("success");
            },
            error: function (jqXHR, textStatus, errorThrown) {
                //alert("error");
            }
        });

또한 이 Ajax 요청은 여러 메서드에서 호출되며 가장 큰 데이터 세트가 전송될 때만 실패합니다.

시도만

async: false

아약스 옵션에서도 같은 문제가 있었습니다.

먼저 기본적인 Ajax 옵션 중 일부를 명시적으로 설정(및 변경)하는 것으로 시작하겠습니다.

 cache: false,
 timeout: 60000,
 async: false

서버가 반환하는 콘텐츠 유형.JSON 또는 HTML 콘텐츠.서버 콘텐츠에서 charset=utf-8을 사용하고 있습니까?서버 응답이 JSON contentType이어야 합니다.다른 추측 제거 데이터 유형: 당신의 코드에서 "해킹".운을 시험해 보세요.

만약 당신의 서버가 json을 반환한다면, 아래를 시도:

$.ajax({
            type: 'POST',
            url: '/Save',
            data: JSON.stringify(dataset),
            datatype: "json",
            contentType: "application/json",
            success: function (data, textStatus, jqXHR) {
                //alert("success");
            },
            error: function (jqXHR, textStatus, errorThrown) {
                //alert("error");
            }
        });

데이터 유형: "json", 내용유형: "application/json"이 의미 있음

이벤트 핸들러에서 이 AJAX 요청을 보내는 경우(예: 제출 단추 클릭), 두 개의 HTTP 요청이 실행되고 첫 번째 요청이 중단될 때까지 브라우저의 기본 동작(양식 제출)을 방지해야 합니다.

사용할 수 있습니다.e.preventDefault()이를 위해

IE8에서 이런 문제가 발생했습니다.

서버의 최대 게시 크기 설정을 확인합니다.

저도 비슷한 문제가 있었고 위에 설명된 아이디어 중 몇 가지를 시도했습니다.저는 마침내 다음과 같은 방법으로 "중단" 상태를 고쳤습니다.

  1. 추가e.preventDefault();그리고.return false;버튼으로 이벤트 핸들러
  2. 추가datatype: "json", contentType: "application/json",로.jQuery.ajax메서드 매개 변수.

단서를 찾기 위해 모두에게 xx.

이는 도메인 간 문제이거나 요청이 비동기적이기 때문에 요청을 중단하는 Firefox의 문제입니다.교차 도메인의 경우 요청의 출처와 웹 서비스에서 허용되는 항목을 확인할 수 있습니다.당신은 아마도 CORS에 대해 읽어봐야 할 것입니다.

크로스 도메인이 아니라면 요청이 비동기인 것은 분명 문제입니다.동기화로 변경하면 됩니다.

CORS 요청에 대해 양방향 SSL 인증을 사용하는 경우 Firefox는 기본적으로 jQuery ajax 요청을 중단합니다.이는 Firefox와 Chrome에서 CORS가 다르게 구현되었기 때문입니다.이에 추가하여 해결할 수 .withCredentials: trueXHR 인스턴스로 이동합니다.을 jQuery에 할 수 .ajax 전화 번호:

xhrFields: {
  withCredentials: true
}

자세한 내용은 다음 버그 보고서를 참조하십시오.

또한 Firefox는 여전히 OPTIONS 비행 전 요청에 대한 자격 증명 전송을 절대적으로 거부하므로, 이를 필요로 하지 않도록 서버를 구성해야 합니다(2방향 SSL 시나리오에서는 미친 것으로 보입니다).

언급URL : https://stackoverflow.com/questions/13148483/ajax-post-being-aborted-by-firefox-not-seen-in-chrome-or-ie

반응형