새소식

프론트엔드 공부/Web Server

[Web Server] 기초 종합퀴즈

  • -

01. 동일 출처 정책(SOP)에서 동일한 출처(Origin)로 보기 위해 동일해야 하는 요소를 고르세요. (정답 세 개)

A. protocol
B. host
C. port
D. url-path
E. query
더보기

A. protocol
B. host
C. port
D. url-path
E. query

동일 출처 정책(SOP)에서 protocol, host, port가 같으면 동일한 출처로 보고 있습니다.

02. CORS 설정 방법에 대한 설명으로 옳지 않은 것을 고르세요.

A. Node.js에서 setHeader 메서드를 이용해 설정할 수 있다.
B. Node.js에서 writeHead 메서드를 이용해 설정할 수 있다.
C. Node.js에서 Access-Control-Allow-Origin에 출처를 설정해야 한다.
D. Express에서 cors 미들웨어를 이용해 설정할 수 있다. E. Express에서 출처 접근 권한을 설정하려면 credentials를 설정해야 한다.
더보기
A. Node.js에서 setHeader 메서드를 이용해 설정할 수 있다.
같은 출처의 리소스만 공유가 가능한 정책은 동일 출처 정책(SOP) 입니다.

B. Node.js에서 writeHead 메서드를 이용해 설정할 수 있다.
Node.js에서는 응답 객체의 setHeader 메서드를 사용하여 CORS 헤더를 설정할 수 있습니다. CORS를 허용하려면 Access-Control-Allow-Origin 헤더를 허용하려는 출처(도메인)로 설정해야 합니다. 인증 정보를 허용하려면 Access-Control-Allow-Credentials 헤더를 true로 설정해야 합니다. Express에서는 cors 미들웨어를 사용하여 쉽게 CORS를 구성할 수 있습니다. 인증 정보를 허용하려면 cors 미들웨어를 사용할 때 credentials 옵션을 true로 설정해야 합니다.

C. Node.js에서 Access-Control-Allow-Origin에 출처를 설정해야 한다.

D. Express에서 cors 미들웨어를 이용해 설정할 수 있다. E. Express에서 출처 접근 권한을 설정하려면 credentials를 설정해야 한다.
OPTIONS 메서드로 프리플라이트 요청을 보냅니다.

03. 프리플라이트 요청(Preflight Request)에 사용하는 메서드로 옳은 것을 고르세요.

A. GET
B. POST
C. PUT
D. PATCH
E. OPTIONS
더보기
A. GET
B. POST
C. PUT
D. PATCH
E.OPTIONS
프리플라이트 요청(Preflight Request)에 사용하는 메서드는 OPTIONS 입니다.

04. 프리플라이트 요청(Preflight Request)에 대한 설명으로 옳은 것을 고르세요.

A. 응답 헤더의 Access-Control-Allow-Credentials로 출처가 허용되면 실제 요청을 보낸다.
B. POST 메서드로 사전 요청을 보내 해당 출처 리소스에 접근 권한이 있는지 확인한다.
C. 프리플라이트 요청으로 미리 접근 권한을 확인할 수 있다.
D. 요청을 두번 보내기 때문에 리소스 측면에서 비효율적이다.
더보기

 

A. 응답 헤더의 Access-Control-Allow-Credentials로 출처가 허용되면 실제 요청을 보낸다.
응답 헤더의 Access-Control-Allow-Credentials가 아닌 Access-Control-Allow-Origin 입니다.

B. POST 메서드로 사전 요청을 보내 해당 출처 리소스에 접근 권한이 있는지 확인한다.
POST 메서드가 아닌 OPTIONS 메서드 입니다.

C. 프리플라이트 요청으로 미리 접근 권한을 확인할 수 있다.

D. 요청을 두번 보내기 때문에 리소스 측면에서 비효율적이다.
프리플라이트 요청을 했을 때, 접근 권한이 없는 경우 CORS 에러가 나기 때문에 실제 요청을 불필요하게 보내지 않아도 됩니다.

05. CORS 설정 방법에 대한 설명으로 옳지 않은 것을 고르세요.

A. Node.js에서 setHeader 메서드를 이용해 설정할 수 있다.
B. Node.js에서 writeHead 메서드를 이용해 설정할 수 있다.
C. Node.js에서 Access-Control-Allow-Origin에 출처를 설정해야 한다.
D. Express에서 cors 미들웨어를 이용해 설정할 수 있다. E. Express에서 출처 접근 권한을 설정하려면 credentials를 설정해야 한다.
더보기
A. Node.js에서 setHeader 메서드를 이용해 설정할 수 있다.

B. Node.js에서 writeHead 메서드를 이용해 설정할 수 있다.

C. Node.js에서 Access-Control-Allow-Origin에 출처를 설정해야 한다.

D. Express에서 cors 미들웨어를 이용해 설정할 수 있다. E. Express에서 출처 접근 권한을 설정하려면 credentials를 설정해야 한다.
CORS를 허용하려면 Access-Control-Allow-Origin 헤더를 허용하려는 출처(도메인)로 설정해야 합니다. 인증 정보를 허용하려면 Access-Control-Allow-Credentials 헤더를 true로 설정해야 합니다. Express에서는 cors 미들웨어를 사용하여 쉽게 CORS를 구성할 수 있습니다. 인증 정보를 허용하려면 cors 미들웨어를 사용할 때 Configuration Options을 true로 설정해야 합니다.
Express에서 출처 접근 권한을 설정하려면 cors 미들웨어를 사용하면 됩니다. 세부적으로 출처를 설정해주기 위해서는 cors의 전달인자에 Configuration Options를 설정해야 합니다. Configuration Options의 credentials가 아닌 origin을 설정합니다.

06. Express 미들웨어를 사용하는 상황으로 보기 어려운 것을 고르세요.

A.모든 요청에 대해 url이나 메서드를 확인할 때
B.POST 요청 등에 포함된 body(payload)를 구조화할 때
C.단순 요청 (Simple Request)이 필요할 때
D.모든 요청/응답에 CORS 헤더를 붙여야 할 때
E.요청 헤더에 사용자 인증 정보가 담겨있는지 확인할 때
더보기
A.모든 요청에 대해 url이나 메서드를 확인할 때

B.POST 요청 등에 포함된 body(payload)를 구조화할 때

C.단순 요청 (Simple Request)이 필요할 때
단순 요청(Simple Request)은 프리플라이트 요청(Preflight Request)을 생략하는 요청으로 Express 미들웨어와를 사용하는 상황으로 보기는 어렵습니다. 단순 요청은 만족시켜야 하는 조건들이 많습니다.
- GET, HEAD, POST 요청 중 하나여야 합니다.
- 자동으로 설정되는 헤더 외에, Accept, Accept-Language, Content-Language, Content-Type 헤더의 값만 수동으로 설정할 수 있습니다. Content-Type 헤더에는 application/x-www-form-urlencoded, multipart/form-data, text/plain 값만 허용됩니다.


D.모든 요청/응답에 CORS 헤더를 붙여야 할 때

E.요청 헤더에 사용자 인증 정보가 담겨있는지 확인할 때

07. 다음 Node.js 서버 코드에 대한 설명 중 옳지 않은 것을 고르세요.
const http = require('http');
const PORT = 4999;
const ip = 'localhost';

const server = http.createServer((request, response) => {
  console.log(
    `http request method is ${request.method}, url is ${request.url}`
  );
    response.writeHead(200, defaultCorsHeader);
    response.end('hello quizsets');
});

server.listen(PORT, ip, () => {
  console.log(`http server listen on ${ip}:${PORT}`);
});

const defaultCorsHeader = {
  'Access-Control-Allow-Origin': 'http://localhost:1234',
  'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
  'Access-Control-Allow-Headers': 'Content-Type, Accept',
  'Access-Control-Max-Age': 10
};

A. 클라이언트 http://localhost:1234에서 POST 요청을 보낼 시 CORS 에러가 발생하지 않는다.
B. 클라이언트 http://localhost:3000에서 POST 요청을 보낼 시 CORS 에러가 발생한다.
C. 서버에서 http://localhost:1234에 대하여 CORS를 허용하고 있다.
D. 서버에서 허용하는 메서드는 GET, POST, PUT, DELETE, OPTIONS이다.
E. request 객체에서 method, url을 사용할 수 없다.
더보기
A. 클라이언트 http://localhost:1234에서 POST 요청을 보낼 시 CORS 에러가 발생하지 않는다.
B. 클라이언트 http://localhost:3000에서 POST 요청을 보낼 시 CORS 에러가 발생한다.
C. 서버에서 http://localhost:1234에 대하여 CORS를 허용하고 있다.
D. 서버에서 허용하는 메서드는 GET, POST, PUT, DELETE, OPTIONS이다.
E. request 객체에서 method, url을 사용할 수 없다.
서버에서 요청(Request)를 처리할 때, 메서드와 url 관련된 작업을 할 것입니다. 그러기 위해서 Node.js에서는 request 객체에 method, url 같은 유용한 프로퍼티를 세팅해두었습니다.
08. 다음 Express 서버 코드에 대한 설명 중 옳지 않은 것을 고르세요.
//App.js
const express = require('express');
const app = express();
const port = 4000;

const flightRouter = require('./flightRouter');

app.use('/flight', flightRouter)

app.get('/', (req, res) => {
  res.send('Welcome, States Airline!');
});

app.listen(port, () => {
  console.log(`http://localhost:${port}`);
});

//flightRouter.js
const express = require('express');
const router = express.Router();

router.get('/', function(req, res) {
	res.send('항공편 목록')
});
router.get('/:id', function(req, res) {
	res.send('항공편 id 조회')
});
router.put('/:id', function(req, res) {
	res.send('항공편 수정')
});

module.exports = router;

A. GET /요청을 서버에 보내면 'Hello World!'가 응답으로 온다.
B. GET /codestates요청을 서버에 보내면 'Hello CodeStates!'가 응답으로 온다.
C. GET /요청을 서버에 보내면 "logger1", "logger2"가 콘솔에 출력된다.
D. GET /codestates요청을 서버에 보내면 "logger1", "logger2"가 콘솔에 출력된다.
E. logger1, logger2는 미들웨어(middleware)다.
 
더보기
A. GET /요청을 서버에 보내면 'Hello World!'가 응답으로 온다.

B. GET /codestates요청을 서버에 보내면 'Hello CodeStates!'가 응답으로 온다.

C. GET /요청을 서버에 보내면 "logger1", "logger2"가 콘솔에 출력된다.
위 코드에서 app.use(logger1, logger2) 코드가 app.get('/', //생략) 보다 밑에 있기 때문에 미들웨어 적용이 되어있지 않음. 그러므로 GET /요청을 서버에 보내면 "logger1", "logger2"는 콘솔 출력 X

D. GET /codestates요청을 서버에 보내면 "logger1", "logger2"가 콘솔에 출력된다.
app.get('/codestates', codestates) 코드는 app.use(logger1, logger2)보다 아래에 있기 때문에 미들웨어 적용이되며, GET /codestates요청을 서버에 보내면 "logger1", "logger2"가 콘솔에 출력됩니다.

E. logger1, logger2는 미들웨어(middleware)다.
미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 액세스 권한을 갖는 함수입니다. 그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시됩니다.
미들웨어의 next() :현재의 미들웨어 함수가 요청-응답 주기를 종료하지 않는 경우에는 next()를 호출하여 그 다음 미들웨어 함수에 제어를 전달해야 합니다. 그렇지 않으면 해당 요청은 정지된 채로 방치됩니다. 출처 : 공식문서

09. GET http://localhost:4000/flight/af6fa55c-da65-47dd-af23-578fdba40bed 요청을 보냈을 때 돌아오는 응답으로 옳은 것을 고르세요.
//App.js
const express = require('express');
const app = express();
const port = 4000;

const flightRouter = require('./flightRouter');

app.use('/flight', flightRouter)

app.get('/', (req, res) => {
  res.send('Welcome, States Airline!');
});

app.listen(port, () => {
  console.log(`http://localhost:${port}`);
});

//flightRouter.js
const express = require('express');
const router = express.Router();

router.get('/', function(req, res) {
	res.send('항공편 목록')
});
router.get('/:id', function(req, res) {
	res.send('항공편 id 조회')
});
router.put('/:id', function(req, res) {
	res.send('항공편 수정')
});

module.exports = router;

A. 'Welcome, States Airline!'
B. 'http://localhost:4000'
C. '항공편 목록'
D. '항공편 id 조회'
E. '항공편 수정'
더보기
A. 'Welcome, States Airline!'
B. 'http://localhost:4000'
C. '항공편 목록'
D. '항공편 id 조회'
E. '항공편 수정'

app.useexpress.Router를 활용하여 라우팅을 하고 있는 코드입니다. GET http://localhost:4000/flight/af6fa55c-da65-47dd-af23-578fdba40bed 요청을 보내면, '항공편 id 조회'가 응답으로 옵니다.

router.get('/:id', function(req, res) {
	res.send('항공편 id 조회')
});

'프론트엔드 공부 > Web Server' 카테고리의 다른 글

세션(블로깅중)  (0) 2023.03.07
쿠키란 무엇일까? 개념, 필요성, 속성, 문제점  (0) 2023.03.07
StatesAirline Server  (0) 2023.02.08
Mini Node Server  (0) 2023.02.06
SOP, CORS  (0) 2023.02.06
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.