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.3
SSO의 경우,jquery-1.11.3
그리고.Google Charts API
.
다음 자바스크립트 코드를 일반적인 JS 파일 중 하나에 넣으십시오.$.ajaxSetup({ cache: false });
jQuery AJAXPOST
서버에 대한 요청은 Mozilla 및 Chrome 브라우저에서 완벽하게 작동합니다.그러나 IE 11 브라우저에 관한 한 jQuery AJAXPOST
창이 처음 로드될 때만 요청이 실패 없이 작동합니다.그런 다음 임의로 실패하고 일단 실패하면 후속 요청도 실패합니다.
다음은 IE 11 브라우저의 네트워크 탭 스냅샷입니다.
성공적인 아약스
POST
요청:실패한 아약스
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 버전 세부 정보:
또한 Google Charts API를 사용하여 페이지에 차트를 렌더링하고 있습니다.요청이 Google Charts API 서버로 실행되는 대상입니다.이것이 IE 브라우저에서 영향을 미칩니까?
IE 11 브라우저에서 작동할 수 있는 솔루션은 무엇입니까?
댓글 섹션에 있는 페데리코클레스 컬로카의 질문에 대한 답변:
요청(클라이언트) 측에 오류가 없습니다.하지만 서버로부터의 응답은 다음과 같습니다.
The request sent by the client was syntactically incorrect
및 응답 헤더Response HTTP/1.1 400 Bad Request
.요청 본문 내용에 절대적인 차이가 없습니다.
그
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
'code' 카테고리의 다른 글
AJAX가 포함된 JavaScript 어레이를 asp.net MVC 컨트롤러에 게시 (0) | 2023.08.26 |
---|---|
동일한 간격으로 전체 너비를 채우는 SwiftUI H 스택 (0) | 2023.08.26 |
백그라운드 작업, 진행 상황 대화, 방향 변경 - 100% 작동하는 솔루션이 있습니까? (0) | 2023.08.26 |
Hibernate가 LONG over CLOB를 사용하도록 전환된 이유는 무엇입니까? (0) | 2023.08.26 |
잘못된 오류: 리소스를 로드하지 못했습니다. net:ERR_CACH_MISS (0) | 2023.08.26 |