# Cross Origin
CORS 란?
📍 CORS 란? Cross Origin Resource Sharing 의 약자로 다른 출처의 자원을 공유하는 것 이라고 한다. Spring Cloud 에서는 아무런 설정을 하지 않으면 보안적인 이유로 다른 출처의 HTTP 요청을 제한한다고 한다 SOP (Same Origin Policy) 프론트와 백 서버는 나눠져 있기 때문에 CORS 정책을 설정해줌으로 다른 출처의 자원에 접근할 수 있도록 설정해줘야 한다. 📍 Cross-Origin 이란? 프로토콜이 다른경우 도메인이 다른경우 포트번호가 다른경우 📍 필요성 모든 곳에서 자원 접근이 가능하다면, 우리의 사이트를 흉내내 피싱사이트를 만들어 사용자 정보를 탈취할 수 있게된다. 이러한 공격을 막기위해 필요한 경우에만 서버와 합의해 요청할 수 있도록 하는것이 CORS 이다. 📍 CORS 의 동작 방식 *단순 요청 (Simple

(14) Spring Official Guide - Enabling Cross Origin Requests for a RESTful Web Service
Enabling Cross Origin Requests for a RESTful Web Service https://spring.io/guides/gs/rest-service-cors/ 한줄 요약 fun(api)에 대해서 Cross Origin을 허가해주기 위한 설정법을 익힌다. 핵심 코드 우선 gradle 파일에 을 추가해준다. 그리고 실제 적용하는 코드 자체는 간단하며 두가지 방식이 있다. 1. method에 직접 annotation으로 등록하기 @CrossOrigin 의 origins parameter를 통해 허용해주고자 하는 주소를 추가해주면 된다. 2. global하게 setting 하기 전역적인 방법으로는 WebMVCConfigurer를 custom 하게 구현하는

Web 필수 지식 - CORS
CORS(Cross-Origin Resoure Sharing) 동일한 출처가 아닐때 검사하는 정책이라고 두루뭉술하게 알고 있었는데 프로젝트 진행 중 CORS 때문에 2,3일 고생하면서 제대로 습득해야하는 지식이라는 걸 뼈저리게 깨달았다. 개념과 동작방식, 평소 궁금했던 내용들도 함께 정리해본다. 웹의 Origin(출처) Policy 먼저 Origin이 무엇인지에 대해서 명확히 알고 갈 필요가 있다. 아래의 사진은 URL의 구성요소이다. 이 URL중 Protocol + Host + Path을 합친 부분을 Origin한다. 이 중 단 하나라도 다르다면 다른 출처인 것이다. 예를 들어, https://naver.com 과 http://naver.com 은 프로토콜이 다르므로 다른 출처이다. 에 대해서 먼저 알아봅시다. 웹사이트는 자체 도메인이 아닌 다른 도메인에서 이미지 및 스크립트 리소스를 가져올 수 있는데 이를 Cross origin, Cross-Site loading 이라고 한다. 그러나 이런 로딩은 사이트 간 추적을 가능하게 만듭니다. example-products.com과 example-recipies.com이 있다. 두 사이트 모두 example-tracker.com에서 리소스를 로드하고 example-tracker.com에 사용자의 쿠키가 저장되어 있는 경우 example-tracker.com에서 두 사이트의 정보를 추적할 수 있는데, 이를 교차 사이트 추적이라고 하며 example-tracker.com에서 사용하는 쿠키를 타사 쿠키 라고 합니다. 이러한 cross-site resouces에 대한 쿠키가 2020년을 기준으로 기본적으로 차단되었습

SPA 와 서버간 인증 통신에 대한 이해
SPA는 클라이언트 서버위에서 구동됩니다. SPA 는 클라이언트에 서버를 만들어서 구동합니다. 주로 NODE.JS 서버를 이용합니다. 단순한 경우 아닌 경우도 있습니다. ROLLUP이나 WEBPACK 등이 번들링과 웹서버 개발환경을 클라이언트에서 제공하는 것은 NODE.JS에서 서버를 구성하는 기능을 제공하기 때문입니다. 이러한 방법을 이용하여 클라이언트 측에 NODE.JS 기반의 서버환경이 구성됩니다. 컴퓨터에 있는 폴더의 index.html 파일은 실행하면 화면이 보이지만 뭔가 js를 사용하거나 하면 화면이 나오지 안습니다. 보안상 안된다고 하는데, 아무튼 클라이언트에서 js의 모든 기능을 활용하기 위해서는 클라이언트 환경에 웹서버를 구성해야합니다. 비동기 통신 이런것이 가능하게 된것은 비동기방식 통신이 가능해지면서 만들어진 개발 방법입니다 비동기 방식이(흔히 알고 있는 ajax,fetch, axios ) 도입되면서 우리가 화면으로 보는 웹페이지로 접속한

Chromium cross-origin iframe의 alert, prompt, confrim 제거 논란
Chromium cross-origin iframe의 alert, prompt, confrim 제거 논란 최근 (2021년 7~8월경) 크로미움에 논란이 될 법한 변경점이 있었다. 바로 cross-origin iframe에서 발생하는 alert, prompt, confirm을 제거하는 이슈가 반영되었다는 점이다. Iframe을 활용하는 많은 사이트가 망가질 것으로 예측되는 가운데 사람들의 반응이 뜨겁다. 크롬 개발팀의 한 매니저의 의견을 대충 요약하자면 이렇다. 비동기 처리를 포함하여 알림창을 더 나은 형태로 직접 구현하는 추세이므로 없애도 된다. 정말 이런 기능이 필요한 경우 frame에서 top window로 메세지를 전달하여 t
CORS 복습
CORS (Cross Origin Resource Sharing) CORS는 보안상의 이유로, 브라우저들은 스크립트 내에서 초기화되는 cross-origin HTTP 요청을 제한한다. 기본적으로 SOP(Same-Origin Policy)정책을 이용해 서로 같은 origin에 접근하게 만들어졌다. 이때 같은 origindms 프로토콜,호스트,포트번호가 같은 경우 same-origin 이라고 한다. 여기서 프로토콜,호스트,포트번호는 같은 서버로 판단을 하는 기준이다. CORS 접근 제어 접근 제어는 3가지가 대표적으로 있다. Simple request: 단순요청 Preflight request: options method, flight요청 Request with credentials: 인증정보를 포함한 요청 요청 메서드는 GET,HEAD,POST 이여야 한다.
Cross-Origin Resource Sharing (CORS) : 각종 CORS Error의 원인
교차 출처 리소스 공유 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다. ( 교차 출처 요청의 예시: https://domain-a.com의 프론트 엔드 JavaScript 코드가 XMLHttpRequest를 사용하여 https://domain-b.com/data.json을 요청하는 경우 ) 보안 상의 이유로, 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한합니다. 예를 들어, XMLHttpRequest와 Fetch API는 동일 출처 정책을 따릅니다. >✔️ 동일 출처 정책 (Same-origin Policy) 어떤 출처
지긋지긋한 CORS 파헤쳐보자
CORS (Cross Domain) 서버와의 통신을 위해 ajax나 XMLHttpRequest를 사용하다보면 CORS 에러가 나오는 경우가 종종 발생합니다. 할때마다 설정 방법이나 우회 방법을 항상 찾다보니 매번 고생하는거 같아 정리해봅니다. CORS 란? CORS는 Cross-Origin Resource Sharing의 약자로 보안상의 이유로, 브라우저들은 스크립트 내에서 초기화되는 cross-origin HTTP 요청을 제한합니다. 예를 들면 다음과 같습니다. 위 예제에서 사이트의 도메인은 www.a.com인데 Ajax를 할 경우 www.b.com처럼 다른 도메인에 보낼 경우 CORS 관련 에러가 납니다. 아래는 Same-origin이 되는 조건에 대해서 보여줍니다. (참고 : [https://developer.mozi