我最近刚设置我的服务器以使用SSL证书运行HTTPS.该网站是一个图像主机,ShareX的开发人员已将我的网站包含在他们的应用程序中.
我的问题是,所有HTTP请求都会自动重定向到HTTPS.这个网站很有魅力,ShareX遇到了问题.
如何告诉nginx将HTTP POST请求重定向到HTTPS,但仍然发出POST请求?希望这听起来像信息丰富.
你无法重定向.您可以通过HTTP或HTTPS发送POST请求.这与RFC 7231第4.3.3节一致.
您可以通过 307 响应来完成此操作。
当通过 POSTMAN 触发时,这会将 POST 从 HTTP 重定向到 HTTPS。
这是一些执行此操作的expressJS 代码(但您可以将逻辑转换为任何语言)。
本质上,逻辑是:
如果传入的请求不是通过 SSL 并且正在运行 SSL 服务器,则
- 将位置响应标头设置为您要重定向到的 URL
- 发送响应代码 307
万一
这会导致 POSTMAN 自动通过 SSL 重新发布,其中响应位置标头使用 HTTPS 协议。我相信这个逻辑也适用于浏览器。然而,这样做可能会存在安全问题,因为有人可以“嗅探”传入的 HTTP 请求,从而知道通过 HTTPS 发送的内容。
使用此方法需要您自担风险!
let middleware = (req, res, next) => {
if (!req.secure && req.httpsServer) {
let redirectUrl = `https://${req.hostname}:${config.httpsPort}${req.url}`;
res.location(redirectUrl);
return res.sendStatus(307);
}
return next();
};
module.exports = middleware;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6774 次 |
| 最近记录: |