systemD サービスで CORS (Cross-Origin Resource Sharing) を構成する方法は?

systemD サービスで CORS (Cross-Origin Resource Sharing) を構成する方法は?

systemD サービスで CORS (Cross-Origin Resource Sharing) 設定が機能しません。

CORS(Cross Origin Resource Sharing)が有効になっているノードモジュールがあります。 CORS設定をコードからsystemdサービスに移動する方法について質問があります。

コードの現在の設定:

private allowCrossDomain(req: express.Request, res: express.Response, next: () => void) {
        res.header('Access-Control-Allow-Origin', 'http://localhost:4200');
        res.header('Access-Control-Allow-Headers', 'Authorization, Content-Type');
        res.header('Access-Control-Allow-Methods', 'GET,PUT,POST');
        res.header('Access-Control-Allow-Credentials', 'true');
        next();
    }

代わりにmyService.serviceにCORSを追加したいのですが、次の設定は機能しません。

[unit]
Description=Tool operation BE
After=network.target
[Service]
User=ubuntu
Environment=BACKEND_HOST=backend-ops-model.com
Environment=BACKEN_MODEL_PORT=80
Environment=res.header='Access-Control-Allow-Origin','http://example.com'
WorkingDirectory=/opt/backend-service/operation
ExecStart=/usr/bin/node --experimental-worker /opt/backend-service/operation/node_modules/@gst/operation-service/www.js
TimeoutStopSec=10
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

ベストアンサー1

これが問題を解決する方法です。コードに環境変数としてCORSオプションを追加します。

  private allowCrossDomain(req: express.Request, res: express.Response, next: () => void) {
        res.header('Access-Control-Allow-Origin', process.env.CORS_ORIGIN_HOST || 'http://localhost:4200');
        ...

次に、systemd構成に環境ディレクティブを追加します。

[unit]
Description=Tool operation BE
After=network.target
[Service]
User=ubuntu
Environment=BACKEND_HOST=backend-ops-model.com
Environment=BACKEN_MODEL_PORT=80
Environment=CORS_ORIGIN_HOST=http://alterntive.com
WorkingDirectory=/opt/backend-service/operation
ExecStart=/usr/bin/node --experimental-worker /opt/backend-service/operation/node_modules/@gst/operation-service/www.js
TimeoutStopSec=10
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

上記の設定でsystemdに環境変数を指定しないと、localhost:4200がデフォルトとして選択されます。同じ問題を抱えている他の人にも役立つことを願っています。

おすすめ記事