OPTIONS λ RFC 7231 μ λͺ μλ HTTPμ μ¬λ¬ λ©μλ μ€ νλμ΄λ€.
OPTIONS λ μ€μ λ‘ μ°λ¦¬κ° νλ μμν¬λ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ€λ©΄ μ§μ μ¬μ©ν μΌμ λλ¬Όμ§λ§ νλμ Front Back μ λλλ κ°λ° νλ¦μμλ κΌ μμμΌ ν κ°λ μ€ νλμ΄λ€.
μ΄ Options μ λν΄μ μμ보λλ‘ νμ.
HTTPμ OPTIONS Mthod
Http OPTIONS
λ©μλλ target 리μμ€μ νΉμ μλ²μ ν΅μ νκΈ° μν ν΅μ μ΅μ
μ νμΈν λ μ¬μ©λλ€.
μ¦, ν΄λΉ νκ² μλ²λ 리μμ€κ° μ΄λ€ method, header, content type λ₯Ό μ§μνλμ§ μ μ μλ€.
μ£Όλ‘ Browser μ Js κ° λ³΄λ΄λ Fetch, Axios μμ²μ Preflight μμ μ¬μ©λκ³€ νλ€.
κ·ΈλΌ μ OPTIONS λ₯Ό μ¬μ©ν κΉ?
μ΄λ₯Ό μ΄ν΄νκΈ° μν΄μλ Preflight μ λν΄μ μμΌμΌ νλ€.
Preflight λ?
Preflight μ λ ν¨μ¨μ μΈ ν΅μ μ μν¨κ³Ό κ΄λ ¨μ΄ κΉλ€.
λ§μ½ μ°λ¦¬κ° μμ²λ λ°μ΄ν°λ₯Ό μλ²λ‘ 보λΈλ€κ³ κ°μ νμ.
κ·Έλμ Front μμ μ¬λ¬ μ²λ¦¬λ₯Ό ν λ€, μ΄μ¬ν Body μ λ°μ΄ν°λ₯Ό νμ±νκ³ λ΄μλ€.
νμ§λ§ μλ²κ° POST μμ²μ νμ©νμ§ μλλ€λ©΄..?
κ·ΈλΌ λ°μ΄ν°λ₯Ό Network Byte Order λ‘ λ°κΎΈλ λ± μ¬λ¬ κ³Όμ μ κ±°μΉ κ²λ€μ΄ ν무νκ² μ¬λΌμ Έ λ²λ¦¬κ² λλ€..
μ΄λ₯Ό λ°©μ§νκΈ° μν΄μ μλ²μμ μ΄λ€ λ©μλμ μ΄λ€ header λ₯Ό νμ©νλμ§ νμΈνλ κ³Όμ μ΄ νμνκ² λμκ³ , κ·Έ κ³Όμ μ λ°λ‘ Preflight μμ μννλ€.
κ·ΈλΌ κ²°κ΅ νλ¦μ?
μ°λ¦¬κ° νΉμ Http Method λ‘ μμ²μ 보λ΄κ² λλ€λ©΄ ν΄λΉ μλ²λ‘ OPTIONS λ₯Ό 미리 보λ΄λ³΄κ³ ν΄λΉ μλ΅μ νμΈν ν, μ°λ¦¬κ° λ³΄λΈ Http Method κ° μ§μνλ©΄ μ€μ μμ²μ΄ μ΄λ€μ§κ² λλ κ²μ΄λ€.
μ΄μ OPTIONS Method λ₯Ό μ μ°λμ§ μ μ μκ² λμλ€.
λ κΉκ² OPTIONS μ λν΄μ μμ보λλ‘ νμ.
OPTIONS Method λ?
μμ Preflight μμ OPTIONS κ° μ¬μ©λλ€λ κ²μ μκ² λμλ€.
μ€μ OPTIONS μμ²μ λ΄λ³΄μ.
OPTIONS λ₯Ό curl μμ²μΌλ‘ 보λ΄κ² λλ€λ©΄ μ°λ¦¬κ° μμνκΈ°λ‘λ Headerλ Content-Type, Allow Method μ μ λ³΄κ° λμ΄μμΌ νλ€.
$ curl -X OPTIONS https://some-server.com -i
λΌλ μμ²μ νΉμ μλ²μ 보λλ€κ³ κ°μ ν΄λ³΄μ.
κ·ΈλΌ λ€μκ³Ό κ°μ μλ΅μ λ°μ μ μλ€.
HTTP/1.1 200 OK
Allow: OPTIONS, GET, HEAD, POST
Cache-Control: max-age=604800
Date: Thu, 13 Oct 2016 11:45:00 GMT
Expires: Thu, 20 Oct 2016 11:45:00 GMT
Server: EOS (lax004/2813)
x-ec-custom-error: 1
Content-Length: 0
μ΄λ¬ν μ 보λ€μ μλ²λ‘λΆν° νμΈμ ν μ μκ² λκ³ , μ°λ¦¬λ Preflight λ₯Ό λΉλ‘―ν μ¬λ¬ μν©μμ μ΄λ₯Ό μ¬μ©νκ² λλ κ²μ΄λ€.
μ΄ μ 보λ CORS μμλ μ¬μ©λ μ μλλ°, μ μλ€μΆμ΄ CORS λ λ¨Όμ OPTIONS μμ²μ λ³΄λΈ λ€, ν΄λΉ μ 보λ₯Ό ν λλ‘ ν΅μ μ κ°λ₯ μ¬λΆλ₯Ό νμ νκ² λλ€.
CORS μ λν μμΈν μ΄μΌκΈ°λ ν΄λΉ λΈλ‘κ·Έ Cross Origin Resource Sharing μ΄λ? μμ νμΈν μ μμ΅λλ€.
λΈλΌμ°μ λ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μΉκ² λλ€.
- GET μμ²μΈμ§ POST μμ²μΈμ§ νμ νλ€.
- Content-Type κ³Ό Custom HTTP Header λ₯Ό νμ νλ€.
- OPTIONS μμ²μ ν΅ν΄μ μλ²κ° μ μ ν Access-Control-* λ₯Ό κ°μ‘λμ§ νμΈνλ€.
- λ§μ½ μ μ ν Access-Control μ κ°μ‘λ€λ©΄ μ€μ XHRμ νΈλ¦¬κ±°νλ€.
- μ μ νμ§ λͺ»ν Access-Control λ₯Ό κ°μ‘λ€λ©΄ Error λ₯Ό λ°μμν¨λ€.
λ§μ½ μλ²μμ Cross Origin μ λν μ μ ν Access Control μ νμ§ μλλ€λ©΄ Preflight κ³Όμ μμ Error λ₯Ό λ°μμν€κ³ ν΄λΉ ν΅μ μ μννμ§ μκ² λλ€.
κ·Έλμ CORS λ₯Ό ν΄κ²°νκΈ° μν΄μλ Access Control μ λν λͺ μλ₯Ό ν΄μ€μΌ νλ€.
'π» Computer Science > - Network' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Network] IPλ₯Ό ν¨κ³Όμ μΌλ‘ λλλ λ°©λ² : μ¬μ΄λ (CIDR) (0) | 2021.07.24 |
---|---|
[Network] λ€νΈμν¬ ν΄λμ€, Network Class μ λνμ¬ (0) | 2021.07.22 |
[Network] Packet Switching, ν¨ν· κ΅ν λ°©μμ λν΄μ (0) | 2021.07.22 |
[Network] Wireshark μΌλ‘ λΆμνλ OSI 7 Layer μ Basic Header (0) | 2021.07.17 |
[Network] Host Byte Order κ³Ό Network Byte Order (0) | 2021.07.14 |
λκΈ