본문 바로가기

카테고리 없음

프론트엔드 면접 질문 : CORS 이슈 해결법

CORS 이슈 해결

1. 헤더를 이용.

response.setHeader("Access-Control-Allow-Origin", "*");
* 는 모든 도메인에 대해 허용하겠다는 의미. 즉 어떤 웹사이트라도 이 서버에 접근하여 AJAX 요청하여 결과를 가져갈 수 있도록 허용하겠다는 의미.
만약 보안 이슈가 있어서 특정 도메인만 허용해야 한다면 * 대신 특정 도메인만을 지정할 수 있음.

 

2. JSONP 이용

<script> 태그는 SOP(same-origin-policy)에 해당하지않는다. 서로 다른 도메인간의 JS 호출을 위해 jsonp가 사용되었다. jsonp를 사용하기 위해서는 서버단에서 이를 지원해야한다. 

아래의 예를 보자.

 

--서버--

<script type="text/javascript">

sendUserInfo({"name": "Foo", "Id": 1234, "rank": 7})

</script>

 

--클라이언트--

<body>

    <p id="demo"></p>

    <script type="text/javascript" src="http://serverurl.com/result.json?callback=sendUserInfo"></script>

    <script>

        function sendUserInfo(myObj) {

            document.getElementById("demo").innerHTML = myObj.name;

        }

    </script>

</body>

 

출처:

1. w3schools.com/js/js_json_jsonp.asp

2. https://velog.io/@tmmoond8/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%9D%B8%ED%84%B0%EB%B7%B0-%ED%9B%84%EA%B8%B0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EC%A0%95%EB%A6%AC-%EC%9E%91%EC%84%B1-%EC%A4%91