inblog logo
|
vosw1
    Spring

    서버 컴퓨터에 파일저장하는 간단 RestAPI 서버 만들기 2

    송민경's avatar
    송민경
    Aug 08, 2024
    서버 컴퓨터에 파일저장하는 간단 RestAPI 서버 만들기 2

    1. CORS (Cross-Origin Resource Sharing)

    • 웹 애플리케이션이 다른 도메인에서 리소스에 접근할 수 있도록 하는 메커니즘
    • 브라우저의 보안 정책으로 인해, 웹 페이지는 동일 출처 정책(Same-Origin Policy)에 따라 다른 도메인에서의 리소스 요청을 제한
    • 이러한 제한을 우회, 웹 애플리케이션이 다른 출처의 리소스에 접근할 수 있게 해 줌
     

    CORS의 주요 개념

    • 출처 (Origin)
      • 프로토콜(http 또는 https), 도메인, 포트 번호를 포함
      • EX) http://example.com:8080과 https://example.com은 서로 다른 출처
    • 동일 출처 정책 (Same-Origin Policy)
      • 브라우저는 보안을 위해 기본적으로 다른 출처의 자원에 접근을 차단
      • 웹 페이지가 요청을 보내는 출처와 응답을 보내는 출처가 동일해야 함
    • CORS 요청
      • 브라우저가 다른 출처의 서버에 요청을 보낼 때 자동으로 발생
      • 서버는 이 요청을 처리, 브라우저는 응답을 받아서 리소스를 로드할 수 있음
     

    CORS 요청의 두 가지 유형

    • 단순 요청 (Simple Requests)
      • GET, POST, HEAD 메서드만 사용
      • 특정 헤더(Accept, Accept-Language, Content-Language, Content-Type 등)만 포함
      • 이러한 요청은 별도의 CORS 사전 요청이 필요 없음
    • 사전 요청 (Preflight Requests):
      • PUT, DELETE, PATCH와 같은 메서드나 사용자 정의 헤더가 포함된 요청은 사전 요청(preflight request)이 필요
      • 이 사전 요청은 OPTIONS 메서드를 사용하여 서버가 실제 요청을 허용하는지 확인
      •  

    CORS 헤더

    • 적절한 HTTP 헤더를 응답에 추가하여, 브라우저에게 요청을 허용할지 여부를 알려줌
      • Access-Control-Allow-Origin : 요청을 허용할 출처를 지정
      • Access-Control-Allow-Methods : 허용할 HTTP 메서드를 지정
      • Access-Control-Allow-Headers : 요청에서 허용할 헤더를 지정
      • Access-Control-Allow-Credentials : 자격 증명(쿠키, 인증 헤더 등)의 전송을 허용할지 여부를 지정
      • Access-Control-Expose-Headers : 클라이언트가 접근할 수 있는 응답 헤더를 지정
      •  
    package com.example.simpe_restapi._core; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://localhost:8080") // 허용할 도메인 .allowedMethods("GET", "POST", "PUT", "DELETE") .allowedHeaders("*"); } }
    • addCorsMappings(CorsRegistry registry) : CORS 설정을 추가
    • registry.addMapping("/**") : 모든 경로(/**)에 대해 적용
    • .allowedOrigins("http://localhost:8080") : 허용할 원본 도메인을 설정
      • 다른 도메인에서 오는 요청은 차단
    • .allowedMethods("GET", "POST", "PUT", "DELETE") : 허용할 HTTP 메서드를 설정
    • .allowedHeaders("*") : 허용할 HTTP 헤더를 설정
    모든 헤더 허용
     
    Share article

    vosw1

    RSS·Powered by Inblog