(모질라 기준이라 다른 브라우저는 차이가 있을 수 있음)

동일출처정책이랑 한 출처(origin)에서 로드된 문서나 스크립트가 다른 출처 자원과 상호작용하지 못하도록 제약하는 정책.


여기에서 같은 출처의 기준은,

두 페이지의 프로토콜, 포트, 호스트가 같으면 동일출처로 간주한다. 

예를들어 origin 을 http://dev-troh.tistory.com/a/a.html 이라 했을 때 해당 url 요청 결과는 다음과 같다.


http://dev-troh.tistory.com/a2/a2.html 

성공 

 

http://dev-troh.tistory.com/a/b/c.html

성공 

 

https://dev-troh.tistory.com/a.html 

실패 

프로토콜 상이 

http://dev-troh.tistory.com:81/a/etc.thml 

실패 

포트 상이 

http://im-troh.tistory.com/a/a.html 

실패 

호스트 상이 



위와 같은 이유때문에 Cross domain 문제가 발생하는데, 이를 우회하는 방법이 있다.


1. documnet.domain 방법

   이 방법은 서브 도메인이 다를 경우에 사용함.

   http://A.naver.com -> http://B.naver.com : 서브 도메인이 달라서 호출 거부함.

   

   document.domain = 'naver.com' 으로 설정하면 가능.


2. Cross domain proxy 

   자바스크립트에서 동일 서버의 URL을 호출하고, 이 URL에서 내부적으로 다른 모데인의 URL을 호출하는 것.



3. Cross domain JSON(get 방식만 가능)

  현재 페이지의 스크립트에서 다른 서버로 Ajax 호출을 시도하는 것은 허용되지 않는데 JSONP(JSON With Padding)을 사용하여 해결 가능합니다. jsonp의 원리는 동적으로 script 태그를 생성하고 src부분에 호출할 서버 주소와 파라미터를 붙여서 넣고 document.body에 dom메소드를 사용하여 append합니다. 서버는 다음과 같은 형태로 응답하게 됩니다

callback_function_name{{name:"test"})


'웹 개발' 카테고리의 다른 글

jsonp  (0) 2017.02.09
OAuth 2.0 ( RFC 6749)  (0) 2017.01.19
JSP 와 Servlet의 한글처리.  (0) 2016.10.06
Apache 와 Tomcat  (0) 2016.07.26
http와 https  (0) 2016.07.26

+ Recent posts