javascript - chrome.webNavigation 的 onBeforeNavigate 和 onCommitted 之间的 URL 更改

标签 javascript google-chrome google-chrome-extension

使用 chrome.webNavigation API 时,以下代码(在扩展程序的后台页面中使用):

  chrome.webNavigation.onCommitted.addListener(function(data) {
    console.log('onCommitted', data.tabId, data.url);
  });
  chrome.webNavigation.onBeforeNavigate.addListener(function(data) {
    console.log('onBeforeNavigate', data.tabId, data.url);
  });

在导航到“http://drive.google.com”时产生此输出'

newTest.js:18 onBeforeNavigate 606 http://drive.google.com/
newTest.js:18 onCommitted 606 https://drive.google.com/

甚至在请求发送到服务器之前,Chrome 就将网址从 http 更改为 https

这种行为也出现在其他情况下。例如'http://getpocket.com ',其中还添加了一条新路径:

newTest.js:18 onBeforeNavigate 626 http://getpocket.com/
newTest.js:18 onCommitted 626 https://getpocket.com/beta/

服务器端重定向全部发生在onCommissed之后,但在这种情况下,Chrome 甚至在向服务器发送请求之前就修改了网址。

此行为是否记录在某处,以便我可以预见地处理它?<​​/p>

最佳答案

对于 Google 云端硬盘,它是 HTTP Strict Transport Security开始吧。

设置完成后,浏览器会自动将所有内容重定向到 HTTPS。

您可以在网络内部查看引擎盖下的内容,例如chrome://net-internals/#hsts

static_sts_domain: drive.google.com
static_upgrade_mode: STRICT

<小时/>

对于 Pocket,这似乎是 301 Moved Permanently 重定向。

按照设计,浏览器会永久缓存此响应(至少 Chrome does )并自动重写链接,无需访问服务器,直到清除所述缓存。

关于javascript - chrome.webNavigation 的 onBeforeNavigate 和 onCommitted 之间的 URL 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33091123/

相关文章:

javascript - Jquery UI 可拖动在屏幕底部创建一个空白

javascript - 无法进行本地开发,错误为 : No 'Access-Control-Allow-Origin' header is present on the requested resource

java - 发布 : 500 Internal Server Error only in Chrome

http - 谷歌浏览器不会缓存内容

javascript - 谷歌浏览器扩展中的 JS 模板( list v2)

php - chrome.extension 和 $.post()

javascript - 正则表达式范围内的动态替换

Javascript onclick 获取 url 值

javascript - jQuery:在 onclick 之前触发焦点以获取 Ajax 建议

javascript - 当鼠标悬停在单词上时获取单词