티스토리 뷰

http://webtn.tistory.com/30


웹 개발하다보면 cross domain 문제가 많이 발생한다 ....

해결책은?? 내가 아는 해결책은 5가지 정도 있다. (저 위에 블로그에 자세히 설명되어 있음)


1.document.domain 설정하기 (도메인은 같으나 서브도메인이 다른 경우에만 가능)

 -통신할 2개의 html 파일에 모두 <script> document.domain="동일한도메인" </script>을 설정하면 도메인을 강제로 1개로 맞춰서 통신이 가능하다.

2.jsonp 콜백함수 활용

 -jsonp자료형으로 ajax통신을 하면 도메인이 다른 경우에도 콜백 메소드를 받을 수 있다.(단 get으로만 가능)

3. Iframe proxying 

 -이건 중간에 프록시 파일(php)을 하나 만들어 그 파일을 거쳐서 통신하는 방법, 스크립트 -> php -> 다른 도메인 으로 접근(file_get_contents/curl)하는 방식이다.

    (단점은 호출되어지는 서버에는 호출하는 쪽의 ip가 아닌 프록시 서버의 ip가 찍힌다) 

(참고 : http://renewal.tistory.com/114)

4.window.postMessage() 사용

 - 보내는 쪽에서 window.postmessage()를 달아주고 받는 쪽에서 window.onmessage()함수를 달아주면 서로 통신이 가능해 진다.

5.flash를 이용한 통신

 -위의 블로그에서 첨봤는데 해보진 않음

6.apache CORS 설정 (참고 : http://enable-cors.org/index.html)

 - CORS(Cross-Origin Resource Sharing)은 XMLHttpRequest를 사용한 ajax호출 시 Cross-Domain을 가능하게 해준다. 원래는  자바스크립트의 SOP(Same-Origin Policy)에 의해서 같은 도메인 끼리만 호출이 가능했다 하지만 점점 웹사이트의 규모가 커지고 여러 openAPI들을 연동하게 되면서 W3C에서 CORS 를 제안하게 되었다. Cross Domain 호출은 JSONP를 사용할 수도 있으나 JSONP는 get방식만 가능한 반면 CORS는 HTTP Request방식도 지원이 된다. (단 브라우저마다 지원하는 레벨이 다르므로 확인해보기)

 -Apache CORS 설정 방법

1)mod_header 설정 

2)httpd.conf/.htaccess안에 Header set Access-Control-Allow-Origin "허용할 도메인" 규칙 설정

-Nginx CORS설정 방법

1)add_header Access-Control-Allow-Origin 도메인


각자의 상황에 알맞게 사용하면 좋을 듯!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함