CORS

yg kim·2021년 11월 30일
0

공부하기

목록 보기
3/14

CORS

- Cross-Origin Resource Sharing

  • 라우저에서 다른 출처의 리소스를 공유하는 방법

Origin(출처)?

CORS 동작원리

  • 단순 요청 방법과 예비 요청을 먼저 보내는 방법 2가지 방법
  • Simple Request

    • 서버에게 바로 요청을 보내는 방법
    • 서버에 API를 요청 -> 서버에서 Access-Control-Allow-Origin 헤더를 포함한 응답 -> 브라우저에서 Access-Control-Allow-Origin 헤더를 확인후 CORS 동작할지 판단
    • 요청 메서드(method)는 GET, HEAD, POST 만 허용
    • Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width 헤더들만 허용
    • Content-Type 헤더는 application/x-www-form-urlencoded, multipart/form-data, text/plain 만 허용
  • Preflight Request

    • Options를 먼저 보내 안전한지 판단한 후 본 요청을 보내는 방법
    • 서버에 Options 메서드로 예비요청 -> 서버에서 Access-Control-Allow-Origin 헤더를 포함한 응답 -> 브라우저에서 Access-Control-Allow-Origin 헤더를 확인 후 CORS 동작할지 판단

CORS 에러 해결방법

  • Access-Control-Allow-Origin: <origin> | * 으로 허용된 출처만 리소스에 접근할 수 있도록 적용
  • Access-Control-Allow-Methods: <method>[, <method>]* 특정 메소드만 접근 가능하도록 적용
  • Access-Control-Expose-Headers: <header-name>[, <header-name>]* 브라우저의 자바스크립트에서 헤더에 접근할 수 있도록
  • Access-Control-Allow-Headers: <header-name>[, <header-name>]* 커스텀 헤더 사용시
  • Access-Control-Max-Age: <delta-seconds> Preflight 요청 결과를 캐시할 수 있는 시간
  • Access-Control-Allow-Credentials: true 자바스크립트 요청시 credentials 가 include일때 요청 응답이 가능하도록 설정 (defalut -> false)
profile
발전하고 싶은 사람

0개의 댓글