Web Server - 기초

EBinY·2021년 9월 8일
0

CORS

Cross Origin Resource Sharing: cross origin에서 리소스(서버자원)을 요청하여 사용
같은 오리진(same origin)에서 요청하던 방식에서, 다른서버에서의 요청을 수용할 필요가 생김
초기에는 보안상의 이유로 브라우저들은 제한, 개발자들의 요청으로 앱의 고도화를 위하여 서버가 allow한 범위 내에서의 요청을 허용하게 됨
리소스에 접근하기 위한 권한을 요청하는 것이라고 보면 됨.
보안상의 이유도 있지만, 본인들의 API를 제한적으로 제공하기 위한 용도로 사용한다.
즉, 제한적인 리소스를 제한적으로 제공하기 위하여 사용한다.

origin(출처)는 스킴(http), 호스트(ex.com), 포트(:8080,:3005)를 기준으로 분류한다
https://developer.mozilla.org/ko/docs/Glossary/Origin

(예시)
const defaultCorsHeaders = {
'access-control-allow-origin': 'Sh+8',
'access-control-allow-method': 'GET, POST, PUT, DELETE, OPTIONS',
'access-control-allow-headers': 'content-type, accept',
'access-control-max-age': 10 // seconds.
};
(설명)
모든 도메인을 허용(Sh+8)(별표, 와일드카드라고 함)
메소드와 헤더는 적혀있는 것들만 허용함
preflight request는 10초까지 허용함(인증 유효기간이라고 보면 됨)

OPTIONS
서버에서 allow하는 조건들을 갖추고 있는지 실제 요청 전에 확인하는 요청(사전 확인 요청)
여기에서 거절을 당하면 실제 요청을 할 수 없다.

let body = [];
request.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
// 여기서 body에 전체 요청 바디가 문자열로 담겨있습니다.
});

response.end 는 각 요청에 한번만 들어가야함, 2번 이상이면 에러.

middleware

  • 미들웨어가 따로 response를 주는게 아니라 단순히 공정을 진행하는 내용이라면 그 미들웨어에 response가 없기 때문에 next()를 안 해주면 계속 그 미들웨어 내부에 세션(?)이 남아있으니 next()를 통해 다음 공정으로 넘어가라고 명령해야 한다

라우팅의 두가지 기준: method, url

디버깅: inspect

0개의 댓글