chrome.proxy 不向普通网页脚本开放
proxy 权限并不会让扩展的特权 API 出现在普通网页或每个脚本上下文中。
把 "proxy" 加入扩展的权限,并不会把网站自身的 JavaScript 变成扩展代码。
先确认出错的那条语句究竟在何处运行。普通页面、注入的页面脚本、内容脚本,以及扩展自己拥有的页面或 service worker,对 API 的访问权限各不相同。刷新页面并不是判断这条边界的可靠方法。
把需要特权的 proxy 操作放在受支持的扩展上下文中,并在需要时通过扩展文档中说明的消息传递机制进行通信。扩展本身仍然需要相应的权限。
把这项操作限制在窄范围内。内容脚本不应把来自任意网站的随意请求转发出去以重新配置浏览器代理,除非扩展自身做了校验,并且有面向用户的明确目的。
如果 API 存在但设置没有生效,那是另一个问题:请检查 异步错误、作用域和实际控制情况。API 对象为 undefined 时,首先指向可用性与执行上下文,而不是远端代理 IP 是否接受连接。