首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在systemD服务中配置CORS (跨源资源共享)?

如何在systemD服务中配置CORS (跨源资源共享)?
EN

Unix & Linux用户
提问于 2019-09-03 18:08:34
回答 1查看 632关注 0票数 -1

在systemD服务中设置CORS (跨源资源共享)不起作用。

我有一个启用CORS (交叉源资源共享)的节点模块,现在我的问题是如何将CORS配置从代码移动到systemd服务?

当前代码中的设置:

代码语言:javascript
复制
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,但是下面的设置不起作用:

代码语言:javascript
复制
[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
EN

回答 1

Unix & Linux用户

发布于 2019-09-05 14:21:29

这就是解决问题的方法。在代码中添加CORS选项作为环境变量:

代码语言:javascript
复制
  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配置中添加Environment指令:

代码语言:javascript
复制
[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将被选中为默认值。希望它能在同样的问题上帮助其他人。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/538894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档