GET, HEAD, POST 단, POST 인 경우 content-type application/x-www-form-unlencoded multipart/form-data text/plain
OPTIONS
CORS 처리 과정
1) 브라우저에서 서버로 요청을 보내기를 시도한다. 2) 브라우저는 Host 와 Origin 을 자동으로 추가한다. GET /products/ HTTP/1.1 Host: api.domain.com Origin: https://www.domain.com 3) 서버에서 Origin 리퀘스트 헤더를 확인합니다. Origin 값이 허용되면, Access-Control-Allow-Origin요청 헤더 Origin 값으로 설정한다. Http/1.1 200 OK Access-Control-Allow-Origin: https://www.domain.com Content-Type: application/json 4) 응답을 받은 브라우저는 Access-Control-Allow-Origin 헤더가 탭의 출처와 일치하는지 확인한다. Access-Control-Allow-Origin 값이 정확히 출처와 일치하거나, "*" 와일드 카드 연산자를 포함하는 경우 검사가 통과된다.
1) 브라우저에서 진짜 요청을 보내기 전에 미리 확인 요청을 보낸다. 이 요청은OPTIONS메소드를 사용한다.
3) 서버는 허용된 메소드 및 헤더를 지정하여 응답한다. HTTP/1.1 200 OK Access-Control-Allow-Origin: https://www.domain.com Access-Control-Allow-Method: GET, POST, OPTIONS, PUT Access-Control-Allow-Headers: Authorization, Content-Type Content-Type: application/json
큰틀에서의 차이를 보면,대칭키 암호화 방식은암복호화에 사용하는 키가 동일한 암호화 방식을 말한다. 그와 달리,공개키 암호화 방식은암복호화에 사용하는 키가 서로 다르며 따라서 비대칭키 암호화라고도 한다. 따라서 공개키 암호화 에서는 송수신자 모두 한쌍의 키(개인키, 공개키)를 갖고있게 된다.
대칭키란, 장단점
대칭키는 위에서 설명한대로 암복호화키가동일하며 해당 키를 아는 사람만이 문서를 복호화해 볼 수 있게된다. 대표적인 알고리즘으로는 DES, 3DES, AES, SEED, ARIA 등이 있다.
공개키 암호화 방식에 비해속도가 빠르다는 장점이 있지만,키를 교환해야한다는 문제 (키 배송 문제)가 발생한다. 키를 교환하는 중키가 탈취될 수 있는 문제도 있고 사람이 증가할수록 전부 따로따로 키교환을 해야하기 때문에관리해야 할 키가 방대하게 많아진다.
이러한 키 배송 문제를 해결하기 위한 방법으로키의 사전 공유에 의한 해결, 키 배포센터에 의한 해결, Diffie-Hellman 키 교환에 의한 해결, 공개키 암호에 의한 해결이 있다.
대칭키 암호화 방식: 암복호화키가 동일한 암호화 방식
대표 알고리즘 :DES, 3DES, AES, SEED, ARIA 등
장점 : 수행 시간이 짧음
단점 : 안전한 키교환 방식이 요구됨, 사람이 증가할수록 키관리가 어려워짐
공개키란, 장단점
위에서 설명한대칭키의 키교환 문제를 해결하기 위해 등장한 것이 공개키(비대칭키) 암호화 방식이다. 이름 그대로 키가 공개되어있기 때문에 키를 교환할 필요가 없어지며공개키는모든 사람이 접근 가능한 키이고개인키는각 사용자만이 가지고 있는 키이다.
예를 들어, A가 B에게 데이터를 보낸다고 할 때,A는 B의 공개키로 암호화한 데이터를 보내고B는 본인의 개인키로 해당 암호화된 데이터를 복호화해서 보기 때문에 암호화된 데이터는B의 공개키에 대응되는 개인키를 갖고 있는 B만이 볼 수 있게 되는 것이다.
1) B 공개키/개인키 쌍 생성
2) 공개키 공개(등록), 개인키는 본인이 소유
3) A가 B의 공개키를 받아옴
4) A가B의 공개키를 사용해 데이터를 암호화
5) 암호화된 데이터를 B에게 전송
6) B는암호화된 데이터를 B의 개인키로 복호화(개인키는 B만 가지고 있기 때문에 B만 볼 수 있음)
따라서 공개키는 키가 공개되어있기 때문에 따로 키교환이나 분배를 할 필요가 없어진다. 중간 공격자가 B의 공개키를 얻는다고 해도 B의 개인키로만 복호화가 가능하기 때문에 기밀성을 제공하며개인키를 가지고있는 수신자만이 암호화된 데이터를 복호화할 수 있으므로 일종의 인증기능도 제공한다는 장점이 있다. 그에 반해 단점은 속도가 느리다는 것이다.