module 은 require 대신 import ~ from 을 쓰는 형식이구요
이 형식에서는 require 가 없어서 json 파일을 가져올 수 가 없군요.
이럴때에는 이런 방법이 있습니다.

import { createRequire } from "module";
const require = createRequire(import.meta.url);
const config = require("./config.json");

require 함수를 import 하는 방법입니다. ㄷㄷㄷ

대신 이 require  는 소스는 가져올 수 없습니다. 

const abc = require("./abc.js");

이런거 말이죠
import ~~ from 쓰면되니 굳이 이럴필요는 없겠지만요

json 읽을때만 사용하세요


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




express 쪽에 body-parser 가 없으면 데이터를 읽어오지 못한다.

 

const bp = require('body-parser');
const express = require('express');
const app = express();
app.use(bp()); // bp 를 바로 넣는게 아니고 bp() 를 넣어야한다.

WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




서버 비용이나 줄일까해서

github page 를 cdn 처럼 사용하고

node.js 서버 하나를 빌려서 api 서버로 사용하려고 했는데

 

이렇게 하면 CSRF 문제가 나온다고 한다. (크롬 콘솔로그에서 뜸)

 

csrf 문제는 cross site request forgery 라고 주소가 다른 사이트두개를 이용하면 위험한 정보가 빠져나갈 수 있다는 문제가 생기는데 이걸 막으려고 처음에 csurf 를 이용하려는데 셋팅도 복잡하고 api 통신 전에 form 페이지를 먼저 호출해서 csrf 토큰을 받아야하는데 매우 번거롭습니다. (두번통신해야한다)

 

그래서 cors 를 쓰려는데 이것도 제한 사항이 있다.

api 서버 주소가 http://localhost 고

정적페이지 주소가 api 서버 주소랑 같을때랑 다를때가 상황이 다르다.

 

 

api 서버는 express 로 돌리는데 아래의 코드를 켰다 껏다 하면서 테스트해봤다.

 

const whitelist = [
    'http://localhost:8080',
    'http://192.168.0.11:8080',
];

app.use(cors({
    origin(origin, callback) {
        const isWhitelisted = whitelist.indexOf(origin) !== -1;
        callback(null, isWhitelisted);
    },
    credentials: true,
}));

 

 

 

첫번째로 cors 코드를 주석처리하고 돌린 상태에서

이러면 통신이 아예 안된다.

 

 

 

두번째 시도 cors 를 켜고 시도하면 에러에서 경고로 바뀐다. 

 

 

 

 

마지막으로 localhost:8080 에서 localhost 로 통신한경우인데 이러면 경고가 안뜬다.

 

 

내 경우엔 두번째 상황에서 해야하는데 경고가 뜨니 보기좀 그렇다.

공격자라면 정적페이지에서 api 서버 주소를 바꿔서 공격할꺼 같은데

클라쪽에선 아떤경우라도 안전을 담보할 수 없을꺼 같은데...


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,