no transfort

Daily/Prog 2015. 3. 5. 23:20

API 사용을 위해 jquery 에서 ajax 호출하다가 발생한 엄청난 에러 no transfort.

{ readyState: 0, responseText: undefined, status: 0, statusText: "No Transport" }

 

http 와 https 와의 통신을 방해하는 엄청난 브라우저 internet explorer 8, 9. ie 7은 아예 버렸다...
핵심은 바로 이것이었다. ie 8 과 ie 9 에서만 안된다는 것.

 

이것에 대한 해결 방법으로 두가지 방안을 생각해 볼 수 있었다.
1. jsonp 에 callback, support.cors 사용
2. XDomainRequest 사용

 

1번 방법은 ie 8,9 에서 동작하지 않았다. HTTP status 200 이지만 ajax error 로 빠지는...
2번 방법을 위해서는 프로토콜을 http 혹은 https 로 통일해야 했다.

 

 

1번 방법으로 하루를 지새웠으나 실패했다.
2번 방법을 사용하여 https 로 통일하고 아래 스크립트를 삽입하여 동작을 확인했다.

 

<!--[if lte IE 9]>
<script type='text/javascript'
src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainre
quest
/1.0.3/jquery.xdomainrequest.min.js'></script>

<![endif]-->

 

IE 8과 9는 MS에서 내놓은 XDomainRequest 객체를 사용하여 CORS를 노출한다.
이 객체는 jquery의 $.ajax 함수를 사용할 때 필요하며 GET 이나 POST 방식으로만, 또 같은 프로토콜끼리만 동작한다.
IE 9 이하의 브라우저에서만 이 jquery.xdomainrequest.js 를 호출하면 된다.

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret