Node.js 6

cors 'Access-Control-Allow-Credentials' 헤더 설정 시 주의할 점

서버측에서 cors를 설정하는 법에 대해 웹서핑을 해보면 cors미들웨어에 인자로 주는 객체를 선언하는 부분에서 블로그마다 다들 표현이 조금씩 달랐다 app.use(cors({ origin: 'http://localhost:1234', credentials: 'true', })); app.use(cors({ origin: 'http://localhost:1234', credential: true, })); app.use(cors({ origin: 'http://localhost:1234', credential: 'true', })); 위와 같이 작성할 시 Access-Control-Allow-Credentials 헤더가 빈 문자열이라는 오류가 계속 난다 app.use(cors({ origin: 'http..

Node.js 2023.03.25

cors를 설정해야 하는 이유 (sop의 존재이유)

cors(cross-origin-resource-sharing)를 설정하라는 오류는 sop(same-origin-policy)에 의해 다른 오리진으로 보내는 요청을 '브라우저'가 막아서 생기는 오류이다 개발을 하다가 cors오류를 맞닥드린 입장에서 브라우저가 요청을 막는다는 사실을 알았을 때, 브라우저가 뭔데 감히 내 요청을 막아서 귀찮게 하는 것인지에 대한 이유는 아래와 같다 1. 대부분의 상황에서 브라우저는 사용자 본인이 작성한 것이 아닌 html,css,js 파싱한다는 것 2. 브라우저에는 인증정보(쿠키, 토큰)가 저장되어 있다는 것 특히 1번은 개발을 하고있는 입장에서 간과할 수 있는 점 같다 즉, 헤커의 사이트에 접속해서 해커가 짠 코드로 인해 해커가 사용자의 브라우저에 저장된 토큰을 가지고 사..

Node.js 2023.03.22

nodejs에서 자주 쓰는 미들웨어 모듈

morgan 서버로 들어온 요청과 응답을 기록해주는 미들웨어 로그의 자세한 정도 선택 가능(dev, tiny, common, combined) 주로 개발환경에서는 dev, 배포환경에서는 combined를 사용 static 정적인 파일들을 제공하는 미들웨어 인수로 정적파일의 경로를 대입 fs.readFile로 직접 읽을 필요 없음 요청하는 파일이 없으면 next를 호출해 다음 미들웨어로 넘어감 파일을 발견했다면 응답하고 다음 미들웨어는 실행되지 않음 요청 주소와 실제 주소를 다르게 만들어 보안 향상 body-parser ( express.json, express.urlencoded ) body-parser의 주요 기능이 현재는 express의 json, urlencoded로 대체됨 요청의 body를 해석해..

Node.js 2023.02.23

미들웨어 확장법

// static 미들웨어를 확장 // 로그인이 되어있을 때만 정적 자원을 제공하도록 app.use('/', (req, res, next) => { if ( req.session.id ) { express.static(__dirname, 'public')(req, res, next) } else { next(); } } 1. 내가 만든 미들웨어 안에 2. 남이 만든 미들웨어를 넣고 3. (req, res, next) 붙이기 +) 미들웨어간 데이터 전달할 때 전역변수 또는 app.set 대신 req.data를 사용, req res는 모든 미들웨어들이 공유한다

Node.js 2023.02.23

Nodejs에 대한 오해

1. Nodejs는 서버(?)다 노드 공식사이트에는 노드를 아래와 같이 설명하고있다 Nodejs는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임이다 풀어서 말하면 Nodejs는 브라우저에서만 실행되었던 JavaScript 해석기를 브라우저 바깥에서도 실행시킬 수 있게 하는 실행기(런타임)이다 그 실행기로 서버를 만드는 것 2. Nodejs는 싱글스레드다 노드를 실행시킨 다음 작업관리자로 살펴보면 스레드가 여러개로 뜨는 것을 볼 수 있다 노드의 스레드는 여러개지만 사용자가 컨트롤 할 수 있는 스레드는 하나로 고정되어있기 때문에 싱글스레드라고 표현했던 것 이 처럼 노드는 원래부터 멀티스레드였고, 노드14버전 부터는 멀티스레드를 직접 사용자가 다룰 수 있게 되었다고 한다 (..

Node.js 2023.02.17