code

IE 11 브라우저에 jQuery AJAX POST 요청용 Content-Length=0이 랜덤으로 있는 이유는 무엇입니까?

starcafe 2023. 8. 26. 12:01
반응형

IE 11 브라우저에 jQuery AJAX POST 요청용 Content-Length=0이 랜덤으로 있는 이유는 무엇입니까?

저는 Spring MVC 기반의 웹앱을 개발하고 있습니다.

다음은 환경 세부 정보입니다.Java 1.8.0_162 (64 bit),Spring 4.3.1,Apache Tomcat 8.0.49,Waffle-1.8.3SSO의 경우,jquery-1.11.3그리고.Google Charts API.

다음 자바스크립트 코드를 일반적인 JS 파일 중 하나에 넣으십시오.$.ajaxSetup({ cache: false });

jQuery AJAXPOST서버에 대한 요청은 Mozilla 및 Chrome 브라우저에서 완벽하게 작동합니다.그러나 IE 11 브라우저에 관한 한 jQuery AJAXPOST창이 처음 로드될 때만 요청이 실패 없이 작동합니다.그런 다음 임의로 실패하고 일단 실패하면 후속 요청도 실패합니다.

다음은 IE 11 브라우저네트워크 탭 스냅샷입니다.

  1. 성공적인 아약스POST요청:

  2. 실패한 아약스POST요청:

두 요청 모두 각각의 요청 본문에 JSON 개체가 있습니다.그런데 그.Content-Length속성 값은 성공적인 요청의 경우 416자(스트링된 JSON 개체의 총 문자)이고 실패한 요청의 경우 0입니다.무작위 실패의 경우POST요청 및 후속 요청,Content-Length항상 0이지만 계산된 JSON 개체는 항상 요청 본문에 있습니다.모든 요청에서 JSON 개체는 동적으로 구축됩니다.

UPDATE-1 (2018년 3월 26일) 다음은Waffle정의된 AD 인증 구성web.xml파일:-

<filter>
    <filter-name>SecurityFilter</filter-name>
    <filter-class>waffle.servlet.NegotiateSecurityFilter</filter-class>
    <init-param>
        <param-name>principalFormat</param-name>
        <param-value>fqn</param-value>
    </init-param>
    <init-param>
        <param-name>roleFormat</param-name>
        <param-value>both</param-value>
    </init-param>
    <init-param>
        <param-name>allowGuestLogin</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>securityFilterProviders</param-name>
        <param-value>
            waffle.servlet.spi.NegotiateSecurityFilterProvider
        </param-value>
    </init-param>
    <init-param>
        <param-name>waffle.servlet.spi.NegotiateSecurityFilterProvider/protocols</param-name>
        <param-value>
            Negotiate
            NTLM
        </param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>SecurityFilter</filter-name>
    <url-pattern>/welcome.do</url-pattern>
</filter-mapping>

하나의 URL(즉,/welcome.do(웹 앱을 로드하는 초기 URL)는 SSO 인증을 호출하도록 구성됩니다.

다음은 AJAX 요청을 실행하는 JavaScript 코드입니다.

function getData() {
    let dashboardFilterParams=new DashboardFilterParams(<passing the arguments to this constructor>);
    //alert(JSON.stringify(dashboardFilterParams));
    //console.dir(dashboardFilterParams);
    $.ajax({
            url: str_THIS_WA_URL+"/xyz/abcdXYZ.do?httpReqType=ajaxReq",
            data: JSON.stringify(dashboardFilterParams),
            dataType: "json",
            contentType: "application/json",
            mimeType: "application/json",
            type: "POST",
            success:function(responseData){
                        if(responseData && "success"===responseData.reqResult) {
                            //populating tables & drawing charts using Google Charts JS API if successfully fetched the data
                        } else {
                            //showing error message
                        }
                    },
            error:function(data,status,er) {
                        showTheMessage("danger","Error getting data");
                        console.log("error: "+JSON.stringify(data)+"\n status: "+status+"\n er:"+er);
                    }
     });
}

IE 11 버전 세부 정보:

IE 11 version details

또한 Google Charts API를 사용하여 페이지에 차트를 렌더링하고 있습니다.요청이 Google Charts API 서버로 실행되는 대상입니다.이것이 IE 브라우저에서 영향을 미칩니까?

IE 11 브라우저에서 작동할 수 있는 솔루션은 무엇입니까?

댓글 섹션에 있는 페데리코클레스 컬로카의 질문에 대한 답변:

  1. 요청(클라이언트) 측에 오류가 없습니다.하지만 서버로부터의 응답은 다음과 같습니다.The request sent by the client was syntactically incorrect및 응답 헤더Response HTTP/1.1 400 Bad Request.

  2. 요청 본문 내용에 절대적인 차이가 없습니다.

  3. str_THIS_WA_URL variable웹 앱과 동일한 도메인을 가리킵니다. 즉, AJAX 요청이 현재 도메인 내에 있습니다.

URL에 타임스탬프를 추가해도 문제가 해결되지 않았습니다.

IE는 서버가 HTTP/401 자격 증명 질문으로 응답할 것으로 예상하고 본문을 두 번 전송하는 것이 낭비될 것이기 때문에 최적화로 이 작업을 수행합니다.

에는 당경우의신로그후이▁case경▁since우▁in▁your의./welcome.do되며, NTLM을 합니다./ 그리고 아래의 모든 것들은 보안 보호 공간의 일부이며 따라서 신체 없는 POST 최적화를 모든 것에 적용합니다.

해결책은 이사하는 것입니다./welcome.do/secured/welcome.do보안되지 않은 리소스가 아래에 있지 않은지 확인합니다./secured.

자세한 내용은 질문-응답 인증제로 길이 게시물을 참조하십시오.

언급URL : https://stackoverflow.com/questions/49403936/why-does-ie-11-browser-randomly-have-content-length-0-for-jquery-ajax-post-reque

반응형