일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- priority_queue
- 우선순위큐
- int
- 알고리즘
- 그래프
- DP
- BFS
- map
- 문자열
- 백트래킹
- 티스토리챌린지
- Set
- 오블완
- 분할정복
- DFS
- C++
- 정렬
- vector
- 배열
- 깊이우선탐색
- 에라토스테네스의 체
- N과M
- stoi
- 프로그래머스
- 유클리드호제법
- 다이나믹프로그래밍
- 백준
- 최소공배수
- 이분탐색
- Sort
- Today
- Total
안녕 세상아,
CORS 를 아시나요...? 본문
내가 API를 만들고 프론트 하시는 분이 내 API를 사용해서 react에서 사용하시는데 갑자기 오류가 났다.
프론트 하는 사람들이 처음 만나는 난관이라고 하는데 해결은 백엔드에서 하는거였더라고요..? 물론 해결 방법은 굉장히 간단하지만 CORS가 뭔지 알아야 해결할 수 있으니까 CORS를 알아보도록,,
우선 CORS (cross-origin resource sharing)는 SOP의 해결책이라고 볼 수 있다. 근데 왜 오류가 날 때 CORS 라고 뜨는지,,모를일,,,
이지만 궁금해서 찾아봄.
- > SOP 위반 오류가 맞지만 SOP오류인 것을 더 구체적으로 보고하여 개발자들이 CORS 설정을 통해 해결할 수 있도록 돕는 것이랍니다,,
암튼 CORS를 알기 위해서는 SOP를 알아야한다.
SOP는 대부분의 웹브라우저가 준수하는 보안 정책이다. CSRF/XSS등은 막을 수 없지만
- Cross-Origin Data Theft
- Cross-Origin AJAX Requests
- Cross-Origin Cookie Access
- Cross-Origin Frame Access
위와 같은 공격은 막을 수 있다.
이렇게 막을 수 있는 이유는 SOP는 다른 origin에서 온 자원들을 사용할 수 없게 차단해놓기 때문이다.
SOP의 특정 HTML Tag는 다른 origin으로부터 온 임베딩을 허용한다. 하지만 데이터 읽는 것은 허용하지 않는다.
SOP로 인해 다른 출처에서 온 자원들을 사용할 수 없어서 CORS 오류가 나는 것이다.
여기서 궁금한 것은 다른 출처인지 어떻게 알 수 있는가? 이다.
동일출처를 판단하는 방법은 ?
네이버
네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요
www.naver.com
예를 들어 이러한 URL이 있다고 하자.
1. https/http는 프로토콜이라고 부른다.
2. www.naver.com 은 호스트라고 부른다.
3. :80 / :443은 포트 번호라고 부른다. 물론 이 포트번호는 생략이 가능하다. 위의 예에서도 생략했다.
-> http의 기본 포트 번호: 80, https의 기본 포트 번호 : 443
위의 3가지만 동일하면 동일 출처로 판단한다.
그렇다면 해결 방법은? 나는 C# .net을 사용해서 오류 해결을 했는데
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder => builder.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod());
});
app.UseCors("AllowAll");
program.cs에서 해당 설정을 해주면 된다.
물론 allowAll은 굉장히 보안적으로 위험한 방법이라 나중에 실제 배포할 때는 이렇게 하면 큰일난다.. 나는 개발할 때 편하게 해려고 이렇게 설정했다.
'서버 개념' 카테고리의 다른 글
HTTP Method가 뭐에요? (1) | 2024.07.31 |
---|---|
binding(바인딩) 이란? (0) | 2024.05.17 |
HTTP 상태코드 (1) | 2024.04.04 |
[FireBase] FCM 작동원리 (0) | 2024.03.28 |
[FireBase] FCM (Firebase Cloud Messaging) 유형, 업데이트 되면서 바뀐 점 (2) | 2024.03.27 |