본문 바로가기

Web

[Web]# 크로스 도메인 / 동일 출처 정책 : CORS, SOP

반응형


크로스 도메인 / 동일 출처 정책(SOP:Same Origin Policy)

AJAX 호출 시 보안상 이유로 동일 서버 이외에는 막히는 문제 발생
도메인이 다른 곳에서 자바스크립트에 접근하려 할때 거부

해결책 여러개 있음.
  • document.domain으로 설정
    • 도메인은 같으나 서브도메인이 다른 경우
    • http://a.tistory.com이랑 http://b.tistory.com 이런 경우
  • jsonp 콜백 함수 사용 JSONP(JSON with Padding)
    • jsonp는 SOP를 해결하기 위해 사용 되는 방법
    • jquery의 getJSON(url주소?파라미터&callback=?), 익명 callback함수)
$.getJSON("http://ssben.tistory.com/jsonp.json?callback=?",
  function(data) {
    console.log('callback data = ', data);
  }
);
    • 또는 ajax 콜 할 때 dataType에 jsonp이랑 callback 넣어줌
    • 아니면 호출시 success 함수로 구현
$('a').click(function() {
  $.ajax({
    url: "http://ssben.tistory.com/jsonp.json",
    dataType: 'jsonp',
    success: function(data) {
      console.log('success ', data);
    },
    error: function(xhr) {
      console.log('error ', xhr);
    }
  });
});
  • 서버에서 해결하려면 CORS(Cross-Origin Resource Sharing)
    • CORS로 외부 요청을 허용할 경우 사용 가능
    • preflight라는 사전 요청을 보내야 함
    • 모든 요청 / 선별적 허용이 가능


반응형

'Web' 카테고리의 다른 글

[Vue3] Composition API  (0) 2022.02.19
[Vue3] <script setup>  (0) 2022.02.19
# Polyfill(폴리필) / Transpiler(트랜스파일러)  (0) 2017.11.14