2016-08-10 3 views
2

REST API에 대한 Ajax 호출을 작성하는 동안 IE9에서 문제가 발생했습니다. IE 9에서는 성공 응답을 얻지 못하고 다른 모든 브라우저에서는 정상적으로 작동하지만 크롬에서는 FF (IE 10의 경우에도 & 11에서도 성공 응답을 얻습니다. Internet Explorer 9에서 '액세스가 거부되었습니다'라는 오류 응답이 표시되고 콘솔에서 HTML1300 : Navigation occurred가 표시됩니다. 또한이 ajax 호출은 http에서 https로 연결됩니다.IE 9 문제 : Ajax 호출에서 성공 응답을 얻지 못했습니다.

jsonp를 사용해 보았지만 API가 jsonp 응답을 반환하지 않습니다. 참고 : 이것은 단순한 응용 프로그램이므로 백 엔드가 필요하지 않습니다.

다음은 제 Ajax 코드입니다.

$.ajax({ 
     type: 'GET', 
     url: 'https://myurl to REST API/', 
     dataType: 'json', 
     contentType: "application/json, 
     data: { 
      'select': "sum(message_count)", 
      'timeRange': timeInterval 
     }, 
     headers: { 
      "Authorization": "Basic " + btoa(AppFramework.constants.USER_NAME + ":" + AppFramework.constants.PASSWORD) 
     }, 
     success: function(result) { 
      AppFramework.messageCcount = result.environments[0].metrics[0].values[0]; 
      console.log(AppFramework.messageCcount); 
     }, 
      error: function(xhr, status, error) { 
      alert(error); 
    } 
    }); 

는 어떤 도움을 당신이 지금 IE9에 대한 질문을하고 있지만 아직 여기에 대한 답을 제공 할 것입니다 왜 확실하지 않다

답변

0

을 appriciated.

AJAX 요청에서 캐시 속성을 false로 설정해보십시오. 이전 버전의 IE는 때때로 모든 AJAX 요청을 캐싱하는 경향이 있으며 브라우저가 업데이트 된 결과를 사용하는 것을 허용하지 않습니다. 당신이 극복하기 위해 다음 중 하나 또는 모두를 사용할 수 있습니다

  1. 변경 유형 GET에서
  2. 시도 캐시 예방 Post에를 - 당신의 URL의 끝에 동적 문자열 (현재 시간 가능한 경우)을 추가하는 것을 시도하십시오 의뢰. 이렇게하면 모든 요청이 고유하게 &으로 설정되어 브라우저가 캐시 된 응답을 사용하지 못하게됩니다.
  3. 응답 헤더에 "Cache-Control","no-cache,no-store"을 추가하여 브라우저에이 요청의 캐싱을 사용하지 않도록 명시 적으로 알려주십시오.
  4. AJAX 호출에 단순히 "cache:false"을 추가하여 캐시를 비활성화하십시오.
관련 문제