클라이언트, 서버, API 의 관계

  • 클라이언트: 리소스를 사용하는 앱. 리소스를 서버에 요청하는 곳
  • 서버: 리소스의 원본이 존재하는 곳. 리소스 요청이 오면 응답하는 곳.
  • API:
    1) 프로그램들이 서로 상호작용하는 것을 도와주는 매개체
    2) 클라이언트가 서버에 요청하는 방법 혹은 수단
    3) 서버는 클라이언트가 서버를 이용할 수 있게 API를 제공해야 한다.
    4) 서비스 이용 방법이라고 해도 무방하다.
    5) 메뉴판과도 같은 역할

Ajax란 무엇이고 왜 필요한가?

  • Ajax(Asynchronous Javascript and XML)이란?
    : 화면 전체가 깜빡이는 정적이고 동기적인 페이지 렌더링 대신 페이지의 필요한 일부만 동적으로 비동기적으로 렌더링시켜주는 웹렌더링기술의 페러다임이다.
  • Gmail에서 처음으로 Ajax를 본격적으로 도입해서 대용량 메일을 보내기 위해 업로드하는 중간에도 다른 메일을 확인하는 등 비동기적인 작업이 가능하게 해준 기술이다.
  • Ajax가 왜 필요한가?
    : 빠르고 비동기적으로 서버와 통신할 수 있는 Dynamic Web Application 수요 증가에 대응하기 위해 필요하다.
  • Ajax를 구현하기 위한 수단은?
    : 처음에 XMLHttpRequest(XHR API)를 사용하다가 근래에는 보다 사용하기 쉬운 fetch API를 주로 사용하고 있다.

CORS(Cross Origin Resource Sharing)

  • CORS란 다른 출처(Origin)에 리소스를 요청할 수 있게 허용해주는 정책이다.
  • 클라이언트와 서버가 상호작용을 시작한 초기에는 자신과 동일한 Origin을 가진 서버만 이용할 수 있는 보안정책이 있었다. 하지만 현대의 대부분의 앱들처럼 점점 다른 출처의 리소스를 이용하고 싶은 수요가 늘어남에 따라 예외적으로 다른 출처의 서버에도 요청할 수 있는 기술을 마련 했다.
  • CORS를 구현하는 기술은?
    : 클라이언트가 다른 출처의 서버에 요청을 하면 그 요청이 곧바로 서버에 가지 않고, 먼저 브라우저에서 OPTIONS 메소드로 서버에 이러한 클라이언트 요청을 허용해줄 수 있는 지 물어보는 요청을 보내고 서버에서 허용해주면 클라이언트는 요청이 서버로 가게 되는 방식이다. 이처럼 브라우저가 알아서 사전에 OPTIONS 메소드를 서버에 보내주는 것을 Preflight Reqeust라 부른다.
profile
웹개발자 James 입니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN