javascript - node js express 在输入时检测谷歌浏览器的地址栏自动完成

标签 javascript node.js google-chrome express

我正在开发一个使用 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 检查它们时,不幸的是,预渲染请求与“正常”请求没有区别。

您可以如下所示手动关闭此功能,但遗憾的是您无法区分服务器端的实际请求。

  1. 在您的计算机上,打开 Chrome。
  2. 点击右上角的“菜单”,然后点击“设置”。
  3. 点击底部的显示高级设置。
  4. 在“隐私”部分,取消选中“使用预测”旁边的框 服务以更快地加载页面。”

SO 引用:https://stackoverflow.com/a/35091410/7055233

关于javascript - node js express 在输入时检测谷歌浏览器的地址栏自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40813621/

相关文章:

javascript - 按钮可调整大小的jquery magic margin

javascript - 在 Jasmine 中,describe 部分可以对应于方法吗?或者它通常对应于构造函数吗?

javascript - 如何搜索浏览器窗口对象以查找哪个对象或变量具有搜索值?

javascript - 如何在加载 Flash 视频时在 Chrome 中设置断点?

javascript - 无法使用javascript修改DIV内容

javascript - 将变量放入 Jquery 选择器中

javascript - NodeJS 交互式 Twitter 机器人问题

node.js - 如何将 sqlite3 与 docker compose 一起使用

node.js - 路线 护照-本地

google-chrome - 在没有 Chrome 网上应用店付款的情况下接受 Chrome 付款