Recent Posts
Recent Comments
Adsense
Archives
Visitor
Today
Total
관리 메뉴

Annotation

OpenLayers WMSGetFeatureInfo 문제 (크로스도메인) 본문

JavaScript

OpenLayers WMSGetFeatureInfo 문제 (크로스도메인)

devs 2015. 5. 7. 17:05


국내에서 OpenLayers 를 얼마나 사용하는지 모르기 때문에


해당 주제로 얼마나 유입율이 올라갈지 모르곘지만.


다수가 사용하던,


소수가 사용하던,


모든 개발자 분들께서 해당 문제로 시간낭비 하지않길 바라며 글을 써내려 가곘습니다.




OpenLayers > GeoServer 요청시 발생하는 문제




지도는 잘 나오나,


객체 정보를 요청(WMSGetFeatureInfo)할때 다음과 같은 문제가 발생 할 수 있습니다.



XMLHttpRequest cannot load (요청 주소) No 'Access-Control-Allow-Origin' header is present on the requested resource.

Origin (주소) is therefore not allowed access.



크롬 개발자도구에 이 문장이 찍혔다면


그 문제의 핵심은 바로 "크로스 도메인 정책" 입니다.


크로스 도메인 정책은 많이 들어보셨을 겁니다.


그래서 그것에 대한 개념은 생략하겠습니다. ^^;


해결은 어찌하느냐?



프록시를 사용해 주세요!


(다른말1 : 클라이언트가 아닌 서버에서 요청해 주세요!)
(다른말2 : 자바스크립트에서 하지마시고 서블릿으로 처리해 주세요!)



직접 구현하셔서 사용하셔두 무방하구요.


누군가 친절하게 미리 제작해둔 소스를 참고하셔도 됩니다.



JSP 프록시(링크)


(중요! 상위 소스 사용시 파라미터명을 알맞게 변경하여 사용해 주세요)



우리는 프록시 소스도 쉽게 구했구요.


마지막으로 한가지 작업만 하면 끝입니다.


OpenLayers 에서 프록시를 사용 할 수 있도록 허용하는 구분이 필요합니다.


OpenLayers.ProxyHost = "/프록시.jsp?url="; //프록시 소스가 존재하는 주소를 적어주세요.


이 구분을 OpenLayers 지도 생성 전에 넣어주세요.


그래야만 WMSGetFeatureInfo 객체를 사용 할 때 프록시를 사용하게 됩니다.



자.


모든 작업이 끝났습니다.


빨리 테스트 해주세요. 현기증 난단 말이에요. :(


감사합니다.

Comments