λΈλΌμ°μ μ΄κΈ°μ 보μμμ μ΄μ λ‘ μ€ν¬λ¦½νΈ λ΄μμ μμλ κ΅μ°© μΆμ² HTTP μμ²μ μ ννλλ°,
μ΄λ₯Ό SOP(Same-Origin Policy, λμΌ μΆμ² μ μ±
) λΌ νλ€.
SOP λ λ Origin κ°μ νλ‘ν μ½, ν¬νΈ, νΈμ€νΈκ° κ°μμΌ λμΌ Origin μ΄λΌκ³ ν μ μλ€.
- μλ₯Ό λ€μ΄
http://www.gitflow.orgμ΄λΌλ URL μ΄ μλ€λ©΄ λ€μκ³Ό κ°μ μν©μ΄ λ°μνλ€.http://www.gitflow.org/user(μ±κ³΅)httsp://www.gitflow.org(μ€ν¨ - νλ‘ν μ½ μμ΄)http://www.gitflow.org:8080(μ€ν¨ - ν¬νΈ μμ΄)http://blog.gitflow.org(μ€ν¨ - νΈμ€νΈ μμ΄)
κ·Έλμ μ΄λ₯Ό 보μνκΈ° μν΄ λΈλΌμ°μ μΈ‘μμ JSONP λ₯Ό μ¬μ©νκ±°λ, μλ² μΈ‘μμ CORSλ₯Ό μ΄μ©νμ¬ ν΄κ²°ν μ μλ€.
μ¬κΈ°μ CORS(Cross-Origin Resource Sharing) λ, μΉ μλ² λλ©μΈ κ° μ‘μΈμ€ μ μ΄ κΈ°λ₯μ μ 곡νμ¬ λ³΄μ λλ©μΈ κ° λ°μ΄ν° μ μ‘μ κ°λ₯νκ² νλ€.
- pre-flight : μ€μ μμ²νλ €λ κ²½λ‘μ κ°μ URL μ λν΄ OPTIONS λ‘ μμ²μ λ λ €λ³΄κ³ μμ²κ°λ₯νμ§ νμΈ
- μ€μ μμ²
μ°μ μλ²μμλ λΈλΌμ°μ μ λ€μκ³Ό κ°μ ν€λ₯Ό headerμ 보λ΄μ€μΌ νλ€.
Access-Control-Allow-Origin: μμ²μ 보λ΄λ νμ΄μ§μ μΆμ² (*, λλ©μΈ)Access-Control-Allow-Methods: μμ²μ νμ©νλ λ©μλ (DEFAULT: GET, POST, HEAD)Acess-Control-Max-Age: ν΄λΌμ΄μΈνΈμμ pre-flight μ μμ² κ²°κ³Όλ₯Ό μ μ₯ν μκ° μ§μ (ν΄λΉ μκ° λμμ pre-flight λ₯Ό λ€μ μμ²νμ§ μλλ€.)Access-Control-Allow-Headers: μμ²μ νμ©νλ ν€λ
κ·Έλ¦¬κ³ Spring κ³Ό Spring Boot μμλ λ€μ 2κ°μ§ λ°©λ²μΌλ‘ CORS λ₯Ό ν΄κ²°ν μ μλ€.
-
Controller μ§μ κ°λ³μ μΌλ‘ νμ©νλ λ°©λ²μΌλ‘λ
@CrossOriginμ μ¬μ©νλ κ²μ΄λ€.
CrossOrigin_Controller -
Global νκ² μ§μ
WebMvcConfigurerλ₯Ό ꡬννκ±°λ λ€μκ³Ό κ°μ΄@BeanμΌλ‘ λ±λ‘νμ¬addCorsMappingsμ μνλ path λ₯Ό μΆκ°νλ©΄ λλ€.
WebMvcConfigurer