如何在 SAFE-Stack 中正确强制使用 HTTPS?
How to properly force HTTPS in SAFE-Stack?
根据 Saturn docs,要在土星中使用 HSTS,需要在 application
:
中指定 force_ssl
application {
url ("http://0.0.0.0:" + port.ToString() + "/")
force_ssl
...
}
这适用于网络的部署版本,但它会破坏本地开发。服务器没有 return 响应,在日志中它写 Request redirected to HTTPS
仅此而已。
是否可以强制使用 SSL 并同时方便本地开发人员?
SAFE-stack 假定使用 webpack
和 webpack-dev-server
,并且作为真实服务器的代理,这意味着需要在那里做一些调整。
所以 webpack 配置现在应该在 proxy
部分的 target
中有 https
:
devServer: {
proxy: {
'/api/*': {
target: 'https://localhost:<port>',
...
},
...
},
...
},
这还不够 - 根据 docs,为避免安全异常,需要取消设置 secure
标志:
devServer: {
proxy: {
'/api/*': {
target: 'https://localhost:<port>',
secure: false,
...
},
...
},
...
},
最后一件事是相应地修改服务器application
:
application {
url ("https://0.0.0.0:" + port.ToString() + "/")
force_ssl
...
对于 Web 的开发版本和生产版本都应该这样做。
根据 Saturn docs,要在土星中使用 HSTS,需要在 application
:
force_ssl
application {
url ("http://0.0.0.0:" + port.ToString() + "/")
force_ssl
...
}
这适用于网络的部署版本,但它会破坏本地开发。服务器没有 return 响应,在日志中它写 Request redirected to HTTPS
仅此而已。
是否可以强制使用 SSL 并同时方便本地开发人员?
SAFE-stack 假定使用 webpack
和 webpack-dev-server
,并且作为真实服务器的代理,这意味着需要在那里做一些调整。
所以 webpack 配置现在应该在 proxy
部分的 target
中有 https
:
devServer: {
proxy: {
'/api/*': {
target: 'https://localhost:<port>',
...
},
...
},
...
},
这还不够 - 根据 docs,为避免安全异常,需要取消设置 secure
标志:
devServer: {
proxy: {
'/api/*': {
target: 'https://localhost:<port>',
secure: false,
...
},
...
},
...
},
最后一件事是相应地修改服务器application
:
application {
url ("https://0.0.0.0:" + port.ToString() + "/")
force_ssl
...
对于 Web 的开发版本和生产版本都应该这样做。