본문 바로가기

Web

jquery ajax json SOP(same origin policy) - 크로스도메인 에러?. 이슈.

반응형

자바스크립트에서 php에 데이터를 요청하려고 할때, 자주 쓰이는것이 바로 json..

json 은 뭐 데이터 형식이니까 위 처럼 표현하면 뭔가 핀트가 조금 어긋난거 같지만..

대충 개발자들끼리 얘기할땐 위 처럼 얘기하니까...

 

오늘 크로스 도메인 문제로 좀 골머리를 알았다.

많이들 아시겠지만 동일 출처 정책 때문에 다른 도메인의 php에서 데이터를 받아오는것은 방법이 한정된다.

 

오늘 겪은 문제는 황당하게도

실 사용 환경은 크로스 도메인 환경이 아닌데..

브라우져만 크로스 도메인 상태로 인식해서 자꾸 버그를 뱉어 낸다는것....

 

근데 이상하단 말이지... 분명 크로스 도메인이 아닌데..

같은 도메인 아래서 실행을 하는데도 SOP 위반 이라네?

 

이런 환경에서 실행하는데 자꾸 동일 출처 정책 위반이라니.. 짜증이 확....

 

어떻게든 브라우져에서 버그로 보이면 안되니까 해결방법을 찾긴해서 처리했다.

근데 궁금하다.. 왜 이런걸까.. 이런 자투리 글까지 모두 읽기 싫은 분들 위해 요점만 정리한다.

 

1. 개발 환경이 크로스 도메인 상태가 아니다.

js , php가 같은 서버 같은 도메인.. 심지어 같은 디렉토리내에 위치하고 있다.

 

2. ajax getJSON 을 사용해서 데이터를 처리했더니.. SOP 위반이란다.. ????????

 

3. 근데.. 또 위반이 아닌것도 있다.. 이상하다.. 뭔가 이상하다... 찾아낸 결과는 아래와 같다.

 

4. getJSON으로 데이터를 요청하고 난후, 받은 결과 데이터를 가지고 뭔가 해주면 정상동작

단순히 데이터 입력만 할거라 데이터를 보내고 난 후 데이터를 받아서 건드리지 않으면 SOP 위반..

 

5. 그래서 해결한 내용이.. 어이없게도... 같은 도메인 아래에 있음에도 불구하고..

   리턴값을 받아서 사용하는건 ajax. getJSON 사용..

   리턴값 받아서 접근도 안하는건 jsonp 를 사용해서 크로스 도메인처럼 요청....

 

이 방법이 옳은지는 모르겠다... 왜 이런건지 또 한참 찾아봐야 할듯 싶다.

 

이렇게 처리하니까.. 에러를 뱉어내진 않는다.. 그런데 난 이상하다.. 뭐가 잘못된거지...

반응형