π€ λμΌ μΆμ² μ μ± (Same-Origin Policy), μ λ±μ₯νκ² λ κ±ΈκΉ?
κΈ°μ‘΄μ μΉ λΈλΌμ°μ λ νλμ μλ²μκ² μμ²νκ³ , μλ²λ HTML νμΌμ λ°νν΄μ£Όκ² λκ³ μΆκ° μμ²μ νλ€ ν΄λ μ΄λκΉμ§λ κ°μ λλ©μΈμμ μ΄λ£¨μ΄μ§λ μΌμ΄μλ€. λΉμ°μ μ¬κ²¨μ§λ μΌμ΄μκΈ° λλ¬Έμ λ€λ₯Έ λλ©μΈμμ μ κ·Όνλ κ²μ μ μ± μ κ·Όμ΄λ μ μμ μΈ νλμΌλ‘ κ°μ£Όλ μλ°μ μμκ³ , κ°μ λλ©μΈμ΄ μλλ©΄ μμ² μ체λ₯Ό λ§λ μ νμ νκ² λμλ€. μ΄λ¬ν μ μ± μ 'λμΌ μΆμ² μ μ± 'μ΄λΌ νλ€. μ¦, μΉ λ³΄μμ μν΄ νλ‘ν μ½, νΈμ€νΈ, ν¬νΈλ²νΈκ° μΌμΉνλ μλ²λ‘λ§ μμ²μ λ³΄λΌ μ μκ² νλ μ μ± μ΄λ€.
π νμ§λ§!
μ€λλ , μΉ μ¬μ΄νΈκ° μ ν리μΌμ΄μ μμ€μΌλ‘ μ±μ₯νκ² λκ³ , λ¨μν λ¬Έμ μ κ³΅λ§ νλ κ²μ΄ μλλΌ λ€μν νΈμμ 보λ€μ μ 곡νκ² λλ€. μ¬μ©μμκ² λ μ¨λ μ΅μ κΈ°μ¬λ₯Ό μ 곡νλ λ± μΆκ°μ μΈ λ°μ΄ν°λ₯Ό κ°μ ΈμμΌ νκ³ , κΈ°μ‘΄μ λμΌ μΆμ² μ μ± λλ¬Έμ λΆνΈν μ λ€μ΄ μ겨λκΈ° μμνλ€.
μ΄λ¬ν μ μ± μ νΌν΄ μΈλΆ λ°μ΄ν°λ₯Ό κ°μ Έμ€κΈ° μν λ°©λ²λ€μ΄ λ±μ₯νκ² λμκ³ JSONP (JSON-Padding)κ° λνμ μ΄λ€.
π§ JSONP ( JSON-Padding )
HTML μ€ν¬λ¦½νΈ(script) νκ·Έμμλ λ€λ₯Έ λλ©μΈμ νμΌμ λΆλ¬μ€λ κ²μ΄ κ°λ₯νλ€. μΌλ°μ μΌλ‘ μ€ν¬λ¦½νΈλ₯Ό λΆλ¬μ€λ λ° μ¬μ©νλ κΈ°λ₯μ μμμ κ°μ Έμ€λ λ° μ°νμ μΌλ‘ μ¬μ©νλ λ°©μμ΄λ€.
μ€ν¬λ¦½νΈ νκ·Έμ srcμ?callback=μ½λ°± ν¨μλͺ μ λΆμ¬ μμ²νλ©΄ μμ²μ κ²°κ³Όκ° μ½λ°± ν¨μμ μΈμμ κ°μ²΄λ‘ μ λ¬λμ΄ λ°μ΄ν°λ₯Ό κ°κ³΅ν μ μκ² νλ€.
π§ CORS (Cross-Origin-Resource-Sharing)
λμΌ μΆμ² μ μ± μ 무λ ₯νμν¨ JSONPμ μμλ μ μ μ¦κ°νκ² λκ³ , κ²°κ΅ μ΄λ¬ν μ°ν λ°©λ²μ μ§μμ μΌλ‘ μ¬μ©νλ κ²μ λ°©μ§νκΈ° μν΄ κ³΅μμ μΈ λ°©λ²μ μ 곡νκ² λλλ° μ΄λ₯Ό CORS ( Cross-Origin-Resource-Sharing )μ΄λΌ νλ€.
μλ‘ λ€λ₯Έ λλ©μΈμμ μμμ μ£Όκ³ λ°κΈ° μν΄μ μλ²μ ν΄λΌμ΄μΈνΈμμ λͺ κ°μ§ μμ μ ν΄μ£Όμ΄μΌ νλ€.
ν΄λΌμ΄μΈνΈ
μμ²μ λ³΄λΌ λ μμ² ν΄λμ CORS κ΄λ ¨ μμ±μ μΆκ°νμ¬ μ λ¬ν΄μΌ νλ€. μ΄λ μ¬μ©λλ νλλ Originμ ν΅ν΄ μμ²μ 보λ΄λ μΆμ²λ₯Ό ν¨κ» 보λΈλ€.
μλ²
μλ²λ μμ²μ μλ΅μΌλ‘, μλ΅ ν΄λμ Access-Control-Allow-Originλ₯Ό ν΅ν΄ μ΄ μμμ μ κ·Ό κ°λ₯ν μΆμ²λ₯Ό 보λ΄μ€λ€. μ΄λ¬ν μλ΅μ μ λ¬λ°μ ν΄λΌμ΄μΈνΈλ μμ μ΄ λ³΄λλ μμ² ν΄λμ Originκ³Ό λΉκ΅νμ¬ μ ν¨νμ§λ₯Ό νμ νκ² λλ€.
μ΄μ° 보면 κ°λ¨νμ§λ§, μ¬μ€ CORS μμ²μ λ³΄λΌ λ μλ²λ‘ μμ²μ ν λ²λ§ 보λ΄λ κ²μ΄ μλλΌ, HTTP λ©μλμΈ OPTIONμ ν΅ν΄ μλΉ μμ²μ μ°μ μ μΌλ‘ μ λ¬νλ€. μ΄λ¬ν μλΉ μμ²μ ν리νλΌμ΄νΈ(preflight)λΌ νλ©°, λΈλΌμ°μ μ€μ€λ‘ μ΄ μμ²μ 보λ΄λ κ²μ΄ μμ ν μ§λ₯Ό νλ¨ν μ μκ² λλ€. ν΄λΌμ΄μΈνΈκ° μμ² ν΄λμ Origin νλλ₯Ό λ΄μ μλΉ μμ²μ 보λ΄κ² λλ©΄, μλ²λ μλΉ μμ²μ μλ΅μΌλ‘ μ΄λ€ κ²μ νμ©νκ³ κΈμ§νλμ§μ λν μ 보λ₯Ό μλ΅ ν΄λμ λ΄μ 보λ΄κ² λλ€.
'λ€νΈμν¬' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ€νΈμν¬] TCP, UDPλ 무μμΈκ°? (0) | 2020.08.30 |
---|---|
[λ€νΈμν¬] λΈλΌμ°μ μ£Όμμ°½μ URL μ λ ₯μ μΌμ΄λλ μΌλ€ (0) | 2020.08.30 |
[λ€νΈμν¬] μΏ ν€μ μΈμ μ λν΄ μμ보μ. (0) | 2020.08.29 |
[λ€νΈμν¬] URI, URL, URN κ·Έ μ°¨μ΄λ₯Ό μμ보μ. (0) | 2020.08.29 |
[λ€νΈμν¬] REST APIλ 무μμΈκ°? (0) | 2020.08.29 |