如题,用selenium打开加载了自己写的chrome扩展的一个浏览器,其中响应头修改失效了,在正常开发启动的浏览器中没有发现这个问题,请问哪位大佬遇到过这种情况,该如何解决,修改响应头回调代码如下:
function callback(requestDetails) {
requestDetails.responseHeaders.forEach(header => {
if (header.name == 'Content-Type' && header.value == "text/plain") {
header.value = header.value + ";charset=UTF-8";
}});
return {responseHeaders: requestDetails.responseHeaders};
}
使用和未使用selenium打开的浏览器中调试过程都没有问题。
查了部分资料,有人说在控制台的network中看到的响应头虽然没变,但实际已经修改了,但是我在修改响应头之后又获取了响应内容,依然是乱码,在正常打开的浏览器中就不会。
几个点可以判断
1 浏览器开发工具下,看请求包是否修改了头
2 直接使用抓包工具,如wireshark,抓下这个端口的网络包,这是最终的网络传输包,如果修改了肯定就是修改了,而且可以看到传递的真实数据流
感谢回复
刚才去查了下浏览器请求响应相关资料,我的理解是响应体内容是二进制形式传输,具体怎么解析是在响应头里标识的,这样看来抓包可能看不出区别,问题的原因还是在于浏览器没有识别到插件修改后的响应头,这个问题在chrome和新版edge中都存在。
换了种方式曲线救国了