HTTP
너 CORS 설정 해줬어? (Cross-Origin Resource Sharing)
너 CORS 설정 해줬어? (Cross-Origin Resource Sharing)
2023.06.22필자는 CORS 개념을 얼핏 들어보기만 했을뿐, 잘 몰랐엇다. 친구가 우연히 한 질문을 이해조차 못하는 나였고, 곧바로 CORS에 대해서 공부했다. 😂 이번 글에서는 CORS 개념을 이해하고 정리한다. CORS (Cross-Origin Resource Sharing)정의우선, 위키피디아에 CROS를 검색해보았다.CORS는, 웹 페이지 상의 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있도록 허용하는 메커니즘이다. 하지만, cross-domain 간의 요청은 기본적으로 Same-Origin Security Policy 에 의해 기본적으로 금지된다.(CORS를 지키면 SOP를 위반하더라도 예외적으로 공유가 가능 하다는 것.)쉽게 이야기하자면, 웹 생태계에는 다른 출처로의 리소스 ..
HTTP 웹 기본 지식 - 캐시 무효화
HTTP 웹 기본 지식 - 캐시 무효화
2022.06.22캐시 무효화 Cache-Control에 확실한 캐시 무효화를 할 수 있는 응답이 있다. "캐시를 적용안하면 캐시가 안되는 것 아닌가요?"라고 궁굼할 수 있는데, 캐시를 적용하지 않아도 웹브라우저들이 ex)GET요청인 경우에 임의로 캐시를 해버리기도 한다. 그래서, "이 페이지는 정말 캐시가 되면 안돼!!"라면, ex) 현재 사용자의 통장잔고는 계속 갱신이 될 수 있으므로 캐시를 하면 안된다. 확실한 캐시 무효화 응답을 원한다면, 이것을 다 넣어줘야한다. [확실한 캐시 무효화 응답] Cache-Control: no-cache, no-store, must-revalidate Pragma: no-cache HTTP 1.0 하위 호환 과거 브라우저에서도 요청이 올 수 있으므로, 위의 것들을 모두 넣어줘야 한다...
HTTP 웹 기본 지식 - 프록시 캐시
HTTP 웹 기본 지식 - 프록시 캐시
2022.06.22프록시 캐시 원 서버(origin 서버)란, 한국에 있는 여러 클라이언트가 미국에 있는 서버에 접근을 한다고 가정하자. 그러면, 거기서 실제 애플리케이션에서 이미지를 제공하는 원소스가 있는 서버를 원 서버(origin 서버)라고 한다. 웹브라우저에서 미국서버까지 가려면 오래 걸릴 것이다. 대략 500ms(0.5초) 걸린다고 가정하자. 그러면 이미지 하나 다운로드 받는데, 사람들(클라이언트)이 전부다 500ms씩 기다려야 할 것이다. 프록시 캐시 서버를 하나 도입한다. (CDN 서비스) 미국에 있는 원서버입장에서는, 사용자에게 응답이 너무 느리다. 그래서 한국 어딘가에다가 프록시 캐시 서버를 넣어놓고, 웹브라우저(클라이언트)가 미국에 있는 원 서버에 직접 접근하는 것이 아니라, 한국에 있는 프록시 캐시 서..
HTTP 웹 기본 지식 - 캐시와 조건부 요청 헤더
HTTP 웹 기본 지식 - 캐시와 조건부 요청 헤더
2022.06.22캐시와 조건부 요청 헤더 캐시 제어 헤더 Chache-Control: 캐시 제어 Pragma: 캐시 제어(하위 호환) Expires: 캐시 유효 기간(하위 호환) 요즈음엔Cache-Control 만 사용하는 추세다. 하나씩 자세히 살펴보자. Cache-Control은, 캐시 지시어(directives)다. Cache-Control: max-age 캐시 유효 시간, 초 단위 Cache-Control: no-cache 데이터는 캐시해도 되지만, 항상 원(origin) 서버에 검증하고 사용 Cache-Control: no-store 데이터에 민감한 정보가 있으므로 저장하면 안됨 (메모리에서 사용하고 최대한 빨리 삭제) Pragma는, 캐시 제어(하위 호환) Pragma: no-cache HTTP 1.0 하위 ..
HTTP 웹 기본 지식 - 검증 헤더와 조건부 요청2
HTTP 웹 기본 지식 - 검증 헤더와 조건부 요청2
2022.06.22검증 헤더와 조건부 요청2 검증 헤더 캐시 데이터와 서버 데이터가 같은지 검증하는 데이터 Last-Modified, ETag 조건부 요청 헤더 검증 헤더로 조건에 따른 분기 If-Modified-Since: Last-Modified 사용 If-None-Match: ETag 사용 조건이 만족하면 200 OK 조건이 만족하지 않으면 304 Not Modified if-Modified-Since: 이후에 데이터가 수정되었으면? 데이터 미변경 예시 캐시: 2020년 11월 10일 10:00:00 vs 서버: 2020년 11월 10일 10:00:00 304 Not Modified, 헤더 데이터만 전송(BODY 미포함), 너의 캐시로 리다이렉션해라. 그 데이터를 써라. 전송 용량 0.1M (헤더 0.1M, 바디 1..
HTTP 웹 기본 지식 - 검증 헤더와 조건부 요청1
HTTP 웹 기본 지식 - 검증 헤더와 조건부 요청1
2022.06.22검증 헤더와 조건부 요청1 캐시 유효 시간이 초과해서 서버에 다시 욫어하면 다음 두 가지 상황이 나타난다. 1. 서버에서 기존 데이터를 변경함 2. 서버에서 기존 데이터를 변경하지 않음 이렇게 두 가지 상황이 나타난다. 1번의 경우, 기존 데이터가 변경되었으므로, 다운을 통해 캐시를 갱신 해서 고객에게 보여주는 것이 맞을 것이다. 그런데, 2번처럼, 만약에 60초를 초과해서 서버에 다시 요청을 했는데, 기존이랑 똑같은 별사진을 다시 다운로드 받는다면, 비효율 적일 것이다. 이러한 비효율적인 문제를 해결하는 것이 "검증헤더와 조건부 요청" 이다. 캐시 시간 초과되었을 때, 캐시 만료후에도 서버에서 데이터를 변경하지 않았다면, 캐시 만료후에도 서버에서 데이터를 변경하지 않음 생각해보면 데이터를 전송하는 대신..