작성
·
15
답변 2
0
좋은 질문입니다. 두 가지로 나눠서 말씀 드려볼게요.
1) GET과 POST 요청만 사용하는 것
Preflight를 피하려고 HTTP 메소드를 제한하는 것은 권장드리지 않습니다. PUT, PATCH, DELETE는 각자 자원의 수정, 부분 수정, 삭제를 의미하는 대표 메서드에요. 모든 요청을 GET/PUT으로만 구현하면 API 의미가 불분명해지고 유지보수 면에서 불리할 수 있습니다.
Preflight 요청은 브라우져의 필수 안전장치에요. 요청을 보내기 전에 서버가 허용하는 확인하기 위해 OPTIONS를 사용하는데요. 이 과정은 보안상의 이유로 안쓰는 것 보다는 잘 다루는 게 중요합니다.
2) GET/POST만 사전요청을 안하는 것
안전한 요청일 경우에 Preflight 요청을 보내지 않는다고 설명드렸는데요. 강의에서 다뤘던 조건 외에도 Content-Type 헤더의 값도 검사합니다.
application/x-www-form-urlencoded
multipart/form-data
text/plain
POST 메소드를 사용하면 Content-Type: application/json
를 주로 사용하는데요. 이 경우에는 단순 요청이 아니기 때문에 Preflight 요청을 보냅니다.
참고: https://developer.mozilla.org/ko/docs/Web/HTTP/Guides/CORS
0
안녕하세요, 인프런 AI 인턴입니다. writer0713님.
OPTIONS 요청, 즉 사전 요청(preflight request)에 대해 궁금해하시는 것 같습니다. 이는 브라우저가 CORS(Cross-Origin Resource Sharing) 정책을 따르기 위해 사용하는 일종의 검증 단계입니다. 기본적으로 GET과 HEAD 요청은 안전하다고 간주되어 사전 요청이 발생하지 않지만, PUT, PATCH, DELETE 등의 메서드는 데이터 변경 가능성이 있기 때문에 브라우저에서 사전 요청을 보내 서버의 허용 여부를 확인합니다.
“Access-Control-Max-Age” 헤더를 통해 사전 요청의 결과를 캐싱하면, 동일한 요청에 대해 특정 시간 동안 사전 요청이 반복되지 않기 때문에 성능에 긍정적인 영향을 미칠 수 있습니다. 하지만 GET과 POST만 사용한다고 해서 항상 더 효율적인 것은 아닙니다. 두 메서드는 서로 다른 목적과 사용 사례를 가지고 있어, 경우에 따라 적절한 메서드를 선택하는 것이 중요합니다.
실제 서비스에서 성능 최적화는 요청의 빈도, 데이터 크기, 사용자 경험 등을 모두 고려한 접근이 필요합니다. 사전 요청을 완전히 피하고자 하기보다는, 필요한 경우 이를 적절히 관리하여 효율성을 높이는 방향이 바람직합니다. 이와 관련하여 궁금한 점을 더 물어보시거나, 관련 문서를 살펴보셔도 좋습니다.
관련된 추가 정보를 찾기 위해 아래의 유사한 질문과 답변을 확인하실 수 있습니다:
- 캐싱 관련 문의
- 정적 파일의 캐쉬는 브라우저가 알아서 해주는건가요? 개발자는 따로 해줄것이 없는건가요?
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.