google-chrome - 不安全的表格和代理服务器?
问题描述
我有一个用 Apache Tomcat 8.5 编写的 Web 应用程序,它在 NGINX 后面被代理。即我正在使用 NGINX 卸载 SSL 并提供静态图像等。该应用程序多年来一直可靠运行。
现在,Chrome 87 更新在每次提交表单时都会导致警告“您要提交的信息不安全”。我用细齿梳子浏览了代码,但我不知道是什么触发了它。
用户通过 https 访问 NGINX,并且证书有效。NGINX 将请求转发到端口 8080 上的 Tomcat。请参阅下面的配置。
表单在 tomcat 服务器上作为 HTTP 提交。但是 NGINX 应该阻止浏览器知道这一点。就浏览器所知,它是 https ......
所有标签都写为相对链接或暗示为相同的 URL。例如
<form action="/login/login.do" method="post">
或<form method="post">
。
谁能指出要寻找的东西?我是否缺少标题或其他内容?
提前致谢
来自 NGINX conf.d/site.conf:
location ~ \.(do|jsp)$ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
解决方案
有一个类似的问题,在我的情况下,我的应用服务器的响应是重定向到与客户端使用的方案(https)不同的方案(http)。
如果这也是您的情况,那么将其添加到您的location
定义中应该可以解决问题。假设您的应用程序/应用程序服务器尊重此标头,那么它应该在Location
标头上使用正确的方案 (https) 进行响应。
proxy_set_header X-Forwarded-Proto $scheme;
为了完整起见,摘自MDN 文档的 X-Forwarded-Proto:
X-Forwarded-Proto (XFP) 标头是一个事实上的标准标头,用于标识客户端用于连接到您的代理或负载平衡器的协议(HTTP 或 HTTPS)。
推荐阅读
- macos - 无法使用 brew 安装 boost 1.59
- amazon-web-services - AWS:将事件桥接事件转发到加密的 SQS(亚马逊托管密钥)
- html - CORS 问题:图像未在 Chrome、Edge 中显示,但在 Firefox 中有效
- r - 在 r 循环中将多个 csv 文件组合在一起
- ios - 创建 iOS 服务以继续在后台工作
- swift - 快速协议转换失败,错误“google.type.LatLng”未定义
- python - 从数字到二进制的 Pandas DataFrame 操作
- javascript - 对对象数组的数组求和
- sql - 在过程中重用 Select 语句
- python - 如何通过 OpenLdap 使用 Python ldap3 验证用户和密码?