Client-Server overview | MDN
Browser-Server-API-HTTP-Ajax
클라이언트가 요청(request)를 보내면 서버는 요청을 처리해서 응답(response)
client-server model | geeksforgeeks
클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜
[위키백과] 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스. (주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공)
=> 서버 자원을 잘 가져다 쓸 수 있게 만들어 놓은 인터페이스
※ 인터페이스
(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면
즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미
※ XMLHttpRequest
[MDN] 전체 페이지의 새로고침없이도 URL 로부터 데이터를 받아와 페이지의 일부만 업데이트 가능. XMLHttpRequest 는 AJAX 프로그래밍에 주로 사용
Fetch API | MDN
Fetch API | 생활코딩
1) 서버에 메세지 요청
{
<script>
name: 'hacker101',
text: '<script>alert('브라우저가 해킹 당했습니다.')</script>'
}
2) 메세지 응답
3) 응답 받은 메세지 돔 반영
const message = document.createElement('div')
message.innerHTML = data.text;
const message = document.querySelector('#message')
message.appendChild(message);
Cross site request forgery (CSRF) attack
How to get CSRF for Current Session
CORS | MDN
CORS이 나오게 된 배경
★ Complete Guide to CORS
[MDN] Cross-Origin Resource Sharing (CORS) is a mechanism that uses -additional HTTP headers- to tell browsers to give a web application running at one origin, access to selected resources from a different origin. A web application executes a cross-origin HTTP request when it requests a resource that has a different origin (domain, protocol, or port) from its own origin.
브라우저가 어플리케이션 사용자들 보호를 위해 실행하는 자발적인 보안 조치
처음 전송되는 리소스의 도메인과 다른 도메인으로부터 리소스가 요청될 경우 해당 리소스는 cross-origin HTTP Request에 의해 요청
XMLHttpRequest과 Fetch API는 same-origin policy를 따른다
→ With the use of HTTP headers, CORS enables the browser to manage cross-domain content by either allowing or denying it based on the configured security settings.
[MDN] The CORS(Cross-Origin Resource Sharing) standard works by adding new HTTP headers that let servers describe which origins are permitted to read that information from a web browser.
Additionally, for HTTP request methods that can cause side-effects on server data (in particular, HTTP methods other than GET, or POST with certain MIME types), the specification mandates that browsers "preflight" the request, soliciting supported methods from the server with the HTTP OPTIONS request method, and then, upon "approval" from the server, sending the actual request. Servers can also inform clients whether "credentials" (such as Cookies and HTTP Authentication) should be sent with requests.
위 조건 중 하나라도 만족하면 브라우저는 Preflight Request를 보낸다.
// Preflight Request
Origin: http://domainx.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-Custom-Header
DomainY가 DomainX의 요청을 받아들이면, 다음과 같은 headers로 응답한다.
// Preflight Response
Access-Control-Allow-Origin: http://domainx.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: X-Custom-Header