Tampermonkey的GM_xmlhttpRequest自动转HTTPS,如何强制用HTTP?
解决Tampermonkey强制将HTTP请求转为HTTPS的问题
核心原因
Tampermonkey默认开启了HTTPS自动升级特性,会自动把脚本中指定的HTTP请求转换为HTTPS,导致你的请求被发送到错误的协议地址。
解决步骤
修正
@connect元指令
把带协议的@connect改为只包含主机和端口的形式:// @connect 123.456.789.012:8000带协议的
@connect可能会被Tampermonkey的升级逻辑干扰,去掉协议后可以确保脚本获得对该主机的完整连接权限。添加禁用HTTPS升级的元指令
在脚本的元数据块(==UserScript==与==/UserScript==之间)新增一行:// @upgrade-insecure-requests false这个指令会强制关闭当前脚本的HTTPS自动升级功能,让
GM_xmlhttpRequest严格按照你指定的http://协议发送请求。保留原请求代码
你的请求逻辑无需修改,继续明确指定HTTP协议的URL即可:GM_xmlhttpRequest({ method: "GET", url: "http://123.456.789.012:8000", headers: { "Content-Type": "application/json" }, responseType: "json", onload: function(response) { console.log("Got response:", response); }, onerror: function(a) { console.log("error", a); } });
验证
修改后重新加载脚本,请求会严格使用HTTP协议发送到目标地址,不再被自动转为HTTPS,即可解决服务器返回的Bad request version错误。
内容的提问来源于stack exchange,提问作者bardGrant
相关产品推荐
相关产品推荐

