我正在开发一个使用 nodejs 和 express 的服务器端程序,它按预期工作,但是,当我输入时(甚至没有 2 个域字符),服务器捕获了 google chrome 请求(并发送响应作为返回)。
如何在输入地址时停止我的服务器程序响应 google chrome 请求,即使是在开头字母处也是如此(它完成但不输入,我总是按回车键)但不是当它是用户的实际请求。
谷歌浏览器是否会对未访问的网站执行此操作?
是否有一个特殊的请求参数来对此进行过滤,以便我只能选择真实的客户端请求而不是浏览器内部(但入站到我的服务器)请求?
当我在地址栏上写一些东西时,比如“我怎么能”,它会自动完成一个(已经访问过的)“查询一个集合”(可能是来自该站点的请求)并且就在底部有(未访问过)“爱”。谷歌浏览器是否向从未访问过的爱情建议网站发出 http 请求?
谷歌浏览器版本:54.0.2840.99 m(64 位)
也许这是具有某些预取技术的浏览器的正常行为?
最佳答案
这称为预呈现,它会在您完成键入 URL 之前在后台加载网页以加快页面加载性能。
这似乎在服务器端检测不到。
Chromium 项目为此打开了一个问题。它被标记为“不会修复”(Prerendering does not have any distinguishing HTTP headers)。预取请求不会显示在开发工具的“网络”选项卡中,因此您无法通过查看 header 轻松确认这一点。当使用 Wireshark 检查它们时,不幸的是,预渲染请求与“正常”请求没有区别。
您可以如下所示手动关闭此功能,但遗憾的是您无法区分服务器端的实际请求。
- 在您的计算机上,打开 Chrome。
- 点击右上角的“菜单”,然后点击“设置”。
- 点击底部的显示高级设置。
- 在“隐私”部分,取消选中“使用预测”旁边的框 服务以更快地加载页面。”
关于javascript - node js express 在输入时检测谷歌浏览器的地址栏自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40813621/