我有一台服务器和一台自助服务终端。今天有人重启了两者。自助服务终端在服务器之前上线,导致自助服务终端显示:
无法连接
Firefox 无法与 10.10.1.1:13668 的服务器建立连接
- 该网站可能暂时不可用或太忙。请几分钟后重试。
- 如果无法加载任何页面,请检查计算机的网络连接
- 如果您的计算机或网络受到防火墙或代理保护,请确保 Firefox 被允许访问网络。
信息亭是已安装的 Debian 设备firefox-esr
。当用户自动登录时,firefox --kiosk <url>
将作为用户总线上的 systemd 服务执行。
$ systemctl cat --user entrance-client
# /usr/lib/systemd/user/entrance-client.service
[Unit]
Description=Entrance Screen
After=graphical-session.target
[Service]
ExecStart=/usr/bin/firefox-esr --kiosk http://10.10.1.1:13668/entrance/
[Install]
WantedBy=graphical-session.target
有没有办法配置 Firefox(最好通过命令行参数或可部署的配置文件)来:
- 无法连接时,在 X 秒后刷新,或
- 无法连接时,以非零退出代码退出(我可以在 systemd 服务配置中处理重启逻辑)。
我并不反对使用扩展来实现这一点,但我需要能够以非交互方式自动部署扩展(文件部署)。因此,我不介意使用 GUI 生成一次配置文件,但之后它应该生成我可以简单地复制到每个站点的文件。
我们不必要求 Firefox 直接连接到服务器,而是可以让 Firefox 连接到本地登录页面,如果可用,该页面会将我们重新重定向到服务器。
该页面可能包含以下内容:
陷阱:CORS
file://
只有当目标通过 提供服务时,才能通过 访问本地登录页面https://
。如果服务器仅通过 提供,则 Firefox在处理混合协议时会尝试将连接http://
升级到 ,因此无法获取测试文件。它提供了此解释。http://
https://
在这种情况下,请将服务器更改为,或使用而不是
https://
访问登录页面http://
file://
http://
我们可以通过添加另一个运行 Python 的简单 systemd 服务来提供我们的登录页面http.server
。然后,我们可以将原始服务更改为加载http://localhost:8123
而不是file://...
。我添加了它--bind 127.0.0.1
,因此它只能通过环回设备访问(而不是由任何可以连接到此客户端的人访问)。端口 (8123) 的选择是任意的。我选择了一个不是任何正常默认值的值(8000 是http.server
默认值)以使其不受影响。重要提示:本地登陆页面由系统总线提供,您需要 root 访问权限才能启用它。
实际运行 Firefox 的服务位于用户总线上,因此它可以访问信息亭用户的桌面和环境。不要使用
sudo
启用该服务。