코드스피츠 스터디의 2회차 강의를 복습하던 중 수업 예제에서 발생한 에러를 해결하다가 공부하게된 내용을 정리하게되었습니다.
script
태그로 다른 도메인을 요청 할 시 SOP 정책이 적용되지 않는 방식을 이용하여 동작합니다. script
태그는 src 속성 값을 호출한 결과를 javascript로 불러와서 즉시 실행시키는 기능입니다. http://server.example.com/post/1
을 요청할 시 다음과 같은 json 데이터를 반환한다고 가정합니다. {
"title" : "JSONP란?" ,
"author" : "yesdoing",
"content" : "쏼라쏼라"
}
* 도메인에서 `script` 태그로 데이터를 호출해서 사용하려고하면 오류가 발생합니다.
<script src="http://server.example.com/post/1">
</script>
* 오류가 발생하는 이유는 `<script>` 파일을 다운로드하고 그 내용을 해석할 때 JSON 객체로 해석하지 않고 {}을 블록으로 해석하여 구문 오류를 발생시킵니다.
?callback=콜백함수명
을 붙여서 요청을 합니다. 그럼 이 요청의 결과로 콜백함수의 인자에 객체를 전달하여 실행시켜 줍니다. callbackFunction(
{
"title" : "JSONP란?" ,
"author" : "yesdoing",
"content" : "쏼라쏼라"
}
);
```
JSONP는 여러 보안상 이슈로 인하여 W3C에서는 2009년 채택된 CORS 방식의 HTTP 통신을 권장하고 있습니다. 이제는 거의 사용되지 않는 기술이지만 이번 스터디 예제에서 나온 Github 파서 예제를 공부하면서 나온 JSONP 통신에 대한 내용을 요약하였습니다.
오호.. 그렇군요!
새로운 create-react-app 기준 빌드를 하게 되면
html 쪽에 webpackJsonp 란게 사용이 되는데
이게, 정적 파일 비동기 로딩시에 다른 호스트에 있는 파일들도 뭔가 제대로 불러와서 처리하기 위함인걸까요
아예 별개의 내용이려나..
https://gist.github.com/velopert/95a415da131f30054e478280dabfb5f1
이런식으로 난독화되어있어서 이게 무슨 역할인지 갈피를 못잡고있는데
궁금하긴한데 엄청 궁금하진 않아서 아직 찾아보진 않았습니다 ㅋㅋ
좋은 포스트 감사합니다!