티스토리 뷰
웹 개발하다보면 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 도메인
각자의 상황에 알맞게 사용하면 좋을 듯!
'웹 프로그래밍' 카테고리의 다른 글
UTF-8 인코딩 & BOM(Byte Order Mark) (0) | 2015.11.19 |
---|---|
Gearman에 대해 알아보자 (0) | 2015.11.11 |
HTTP/2에 대해 알아보자 (0) | 2015.11.06 |
[웹 프로그래밍] crontab 사용법 (0) | 2015.10.22 |
[피들러] 피들러로 패킷 바꿔치기 (0) | 2015.10.16 |