Firefox에서 jquery를 사용한 AJAX https POST 요청이 실패합니다.
문제
각 행에 대한 삭제 링크가 있는 HTML 테이블에 간단한 레코드 목록이 있습니다.삭제 링크는 다음과 같은 고정 URL에 대한 AJAX 게시물 요청을 전송합니다."/delete/record/5
"
AJAX 요청은 jquery를 사용하여 생성됩니다. .ajax()
https를 사용하는 서버에서 실행할 때 POST 메시지로 호출합니다.이 호출은 OSX/Windows 아키텍처의 Firefox 3에서 실패합니다.제가 테스트한 다른 모든 브라우저(OSX/Windows:크롬, 사파리, IE7.)
요청은 https 사이트에서 나오고 동일한 https 사이트로 이동합니다.하지만 프로세스 도중 어딘가에서 원래 요청이 http로 시작하고 우리 서버에서 http->https에서 요청을 보내려는 리디렉션 시도가 있고 Firefox는 해당 리디렉션을 일종의 위조로 거부한다고 생각합니다.
해본 경험이 있는 사람 있나요 .ajax()
Firefox를 사용하여 https 사이트에서 JQuery를 호출합니까?요청에 "?var=xxx
" 인수를 URL에 추가하면 해당 변수가 없는 경우보다 요청이 더 자주 작동하는 것 같습니다.
해결책
HTTP 411 오류가 발생하는 것 같습니다.. 이 오류는 a를 보내는 경우 발생할 수 있습니다 POST
아무것도없이 요청합니다 data
.
이 문제를 해결하려면 빈 개체를 추가하십시오 ({}
) 로 data
귀하의 요청에 대한 재산 :
$.ajax({
url: url,
type: 'POST',
data: {}, // <- set empty data
success: function(data, textStatus) {
// do something
}
});
다른 팁
그럴 것 같지 않습니다 ...내가 당신을 의심하는 것이 아닙니다.하지만 Wireshark를 다운로드하고 HTTP 트래픽을 관찰하여 문제를 확인할 수 없는지 확인하는 것이 좋습니다.다른 브라우저에서 보낸 요청과 FF3에서 보낸 요청을 비교하고 어떤 종류의 응답이 돌아오는지 확인할 수 있습니다.실제로 jQuery가 FF3에서 올바르게 작동하지 않는 문제인 경우 제대로 작동하도록 일부 코드를 변경할 수 있습니다.
요청/응답의 모든 정보에 액세스 할 수있는 Firefox Live 헤더 확장자를 설치할 수 있습니다. 이렇게하면 차이가있을 것입니다.
Firefox에 플러그인이나 Greasemonkey 스크립트가 설치되어 있습니까?
HTTPS에서 jQuery ajax 요청에 문제가 없었습니다. 무엇을 살펴 보는 것이 좋습니다 개똥 벌레 당신이 아직하지 않았다면 나타납니다.
나는 얻었다 $.post
빈 개체를 data
매개 변수. 매개 변수 2의 빈 브래킷에 주목하십시오.
$.post(url, {}, function(response){ alert('done'); }, "json");