google-chrome - 为什么 Chrome DevTools Network 没有响应?
问题描述
我一直在尝试使用 Devtools 'copy as fetch' 来获取一些 url,但我看不到任何响应。如果我尝试重播 xhr,它将起作用。这很奇怪,因为它不适用于这个特定的站点,但是如果我在其他一些站点上尝试“复制为获取”,它确实会带来结果。
我正在尝试做的是获取响应正文并以其他方式显示它(它是一个调度软件,我正在尝试修改它显示日历视图的方式,因为它将所有内容一起显示)。
我有一个扩展,可以让我修改 XMLHttpRequest,这样我就可以获得任何 XHR 的响应,但是由于第一个异步在我注入脚本之前执行,所以我总是错过第一个。
我计划使用 chrome webRequest 停止第一个并再次获取它。
清单.json
{
"name": "jobber",
"version": "2.0",
"description": "Build an Extension!",
"manifest_version": 2,
"permissions": [
"webNavigation",
"webRequest",
"*://secure.name.com/*"
],
"content_scripts": [{
"matches": ["*://secure.name.com/calendar*"],
"js": ["contents.js"],
"run-at": "document_start"
}],
"externally_connectable": {
"matches": ["*://secure.name.com/calendar*"]
},
"background": {
"scripts": ["background.js"]
}
}
内容.js
(function () {
'use strict';
let s = document.createElement("script");
s.textContent = overloadXHR();
document.head.insertBefore(s, document.head.children[0]);
s = document.createElement("script");
s.textContent = displayCalendar;
document.head.insertBefore(s, document.head.children[0]);
})();
function overloadXHR() {
const text = `
console.log(\`overriding: \${Date.now()}\`);
const rawOpen = XMLHttpRequest.prototype.open;
let json = [];
(function(){
XMLHttpRequest.prototype.open = function () {
this.addEventListener("readystatechange", e => {
if (/secure.name.com.calendar.*?calendar=true/i.test(this.responseURL)) {
if ((this.status == 200) && (this.readyState == 4)) {
console.log(this.readyState);
try {
json = JSON.parse(this.response);
window.setTimeout(() => (window.displayCalendar({json}))({json}), 1000);
}
catch (e) { console.log(e); }
}
}
});
rawOpen.apply(this, arguments);
}
}())
`;
return text;
}
function displayCalendar({ json }) {
// do something
}
我也尝试过 POST 请求。我可以看到它们会起作用,但没有给出任何回应。
原始请求:
复制为获取
复制为获取响应
复制为获取时间
解决方案
推荐阅读
- python - DEAP 健身和健身值之间的区别
- ruby-on-rails - 更新父级时更新Rails中关联模型中的属性
- sql - Postgresql:如果LEFT JOIN中的数据存在,则替换选择中的参数
- python - 为什么 Anaconda 为带有和不带 GPU 的 Tensorflow 提供单独的包,我应该使用 conda 还是 pip?
- c - C语言中的简单金字塔
- python - 通过 tor socks 代理发送数据请求时出现 403
- r - 如何根据第三列的共享 ID 从一个数据框中获取数据并将其复制到另一个数据框中的现有列中
- c++ - std::C++ 在非空队列中异步读写会导致竞争条件吗?
- java - 说明错误:“java”插件已应用,但与 Android 插件不兼容
- prolog - Prolog中的寻路递归耗尽内存