티스토리 뷰

728x90
반응형

목차

     

     

     

    https://gnidinger.tistory.com/651

     

    [면접 준비 - Network]CORS에 대하여 - 1

    CORS 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여 웹 애플리케이션이 다른 출처의 선택한 리소스에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 메

    gnidinger.tistory.com

     

    벌써 세 달이나 이전 일이 되었지만, 처음 적은 CORS의 개념과 관련된 글에 이어

     

    조금 실제적인 부분을 정리하려고 한다.

     

    CORS라는 게 무엇인지 경험적으로는 알고 또 처리할 수 있지만 구체적으로 어떻게 표현되는지 알고 싶어서.

     

    짧은 글이 될 것 같지만, 시작!

     

    Origin in CORS

     

    CORS에서 Origin이란 프로토콜, 도메인, 포트로 이루어진 URL, 그중에서도 요청을 보낸 출처를 가리킨다.

     

    추가로 CORS(교차 출처 리소스 공유)란 이 Origin이 요청을 받은 출처와 다른 경우에 생기는 보안 정책 문제를 가리킨다.

     

    OPTIONS

     

    OPTIONS 메서드는 CORS 요청에서 Preflight요청을 보내기 위해 사용된다.

     

    본격적인 요청에 앞서 OPTIONS을 사용해 서버에 요청을 보내 서버가 CORS를 허용하는지 확인한다고 보면 된다.

     

    이어서 서버는 이에 대한 응답으로 

    • Access-Control-Allow-Origin
    • Access-Control-Allow-Methods
    • Access-Control-Allow-Headers

    와 같은 헤더를 포함하여 요청의 허용여부를 돌려준다.

     

    정리하면, OPTIONS 메서드는 Preflight 요청을 통해 서버가 CORS를 허용하는지 확인하기 위해 사용된다.

    HEAD

     

    엄밀히 말하면 CORS와는 관련 없는 메서드이지만 OPTIONS가 나온 김에 정리하고 한다.

     

    HEAD 메서드는 GET과 비슷하게 리소스에 대한 요청을 보내지만,

     

    다른 점은 이 경우 서버는 본문 대신 응답 헤더만 전송한다는 것이다.

     

    쉽게 말해서 HEAD를 사용하면 서버에 특정 리소스가 존재하는지 여부를 확인하고,

     

    존재한다면 리소스에 대한 메타데이터를 얻어올 수 있다.

     

    GET 메서드와는 다르게 모든 본문을 받아보지 않아 네트워크 부하가 적어지며

     

    리소스를 로드하기 전에 미리 크기 등을 계산할 수 있다.

     

    Headers

     

    CORS에서 서버는 클라이언트의 요청에 대해 응답 헤더를 리턴한다.

     

    클라이언트가 요청 헤더에 Origin을 포함해 보내면, 서버는 몇 가지 응답 헤더에 요청을 담아 허용여부와 함께 리턴한다.

     

    여기서 알고 넘어가야 할 단어는 아래와 같다.

     

    • Origin -요청을 보낸 출처(Client Origin)
    • Access-Control-Allow-Origin - 요청을 허용할 출처. '*'로 설정하면 모든 출처의 요청을 허용한다.
    • Access-Control-Allow-Methods - 요청을 허용할 HTTP 메서드 지정.
    • Access-Control-Allow-Headers - 요청에 포함될 수 있는 헤더를 지정. 예를 들면 "Content-Type"등이 있다. 

    즉, Access-Control-Allow-Origin에 Origin이 포함되어 있지 않다면 요청은 거절된다고 볼 수 있다.

    반응형
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2025/01   »
    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
    글 보관함