>  기사  >  웹 프론트엔드  >  iOS 6의 Safari가 캐시=false인 경우에도 $.ajax POST 요청을 캐시하는 이유는 무엇입니까?

iOS 6의 Safari가 캐시=false인 경우에도 $.ajax POST 요청을 캐시하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-03 22:50:031004검색

Why Does Safari on iOS 6 Cache $.ajax POST Requests Even with cache=false?

Safari 캐싱 $.ajax iOS 6 결과: 분석

iOS 6 출시 이후 Safari의 $.ajax 캐싱 $.ajax에 대한 우려가 제기되었습니다. .ajax 호출. 캐시 속성을 'false'로 명시적으로 설정했음에도 불구하고 예기치 않은 캐싱 동작이 지속됩니다. 특히 동일한 입력 매개변수를 일관되게 수신하는 정적 함수 시그니처가 있는 POST 메서드의 경우 더욱 그렇습니다.

근본 원인

조사에 따르면 iOS 6의 Safari는 Cache-Control 헤더가 없거나 "Cache-Control: max-age=0"을 포함하는 POST 요청을 캐시하는 것으로 나타났습니다. 이는 POST 응답의 캐시 불가능성을 존중하는 다른 브라우저와 다릅니다.

해결 방법

전역적으로 캐싱을 방지하려면 유일한 효과적인 솔루션은 "Cache-Control"을 설정하는 것입니다. : 캐시 없음." 이 헤더는 캐싱을 명시적으로 허용하지 않습니다.

  • No Cache-Control 또는 Expires 헤더: 캐싱이 발생합니다.
  • Cache-Control max -age=0 및 즉시 만료: 캐싱이 발생합니다.
  • Cache-Control: no-cache: 캐싱이 발생하지 않습니다.

Apache 구성

Apache에서 이 해결 방법을 구현하려면 구성 파일에 다음 줄을 추가하세요.

Header set Cache-Control "no-cache"

또는 이 동작을 POST 요청으로만 제한하려면:

SetEnvIf Request_Method "POST" IS_POST
Header set Cache-Control "no-cache" env=IS_POST

추가 참고 사항

캐싱은 POST 요청 매개변수와 URL이 변경되지 않은 경우에만 발생한다는 점에 유의할 가치가 있습니다. URL 또는 POST 페이로드에 임의의 데이터를 도입하면 캐싱 문제를 피할 수 있습니다.

위 내용은 iOS 6의 Safari가 캐시=false인 경우에도 $.ajax POST 요청을 캐시하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.