
1. 配置CORS代理服务器
- 使用本地代理:安装“Cors Proxy”类插件→在扩展选项中设置端口(如8080)→通过`http://localhost:8080/`中转请求→绕过浏览器跨域限制(需确保代理支持目标API)。
- 修改请求头:在插件的`background.js`中调用`chrome.proxy.settings.set({"mode":"fixed-server","server":"127.0.0.1:8080"})`→强制所有跨域请求经过代理服务器。
2. 利用WebSocket突破限制
- 建立双向通信:在插件中创建WebSocket连接→将API请求封装为消息发送至服务器→接收响应数据并解析(适合实时数据接口,如股票行情)。
- 示例代码:`const ws = new WebSocket('wss://api.example.com'); ws.onmessage = (event) => { console.log(event.data); };`→通过插件界面触发连接。
3. JSONP回调函数适配
- 动态生成脚本:在插件中构造``标签→设置`src`为`http://api.example.com/data?callback=myFunction`→定义全局回调函数`myFunction(response)`处理数据。
- 安全性处理:在沙盒环境中运行回调脚本→避免污染全局命名空间(可通过`vm`模块隔离执行上下文)。
4. 服务器端反向代理配置
- 搭建中转服务:使用Node.js编写代理服务器→监听特定端口(如3000)→接收插件请求后转发至目标域名→返回数据时添加`Access-Control-Allow-Origin`标头。
- `server.js`示例:`app.get('/proxy', (req, res) => { const target = 'http://target.com/api'; req.pipe(request(target)).pipe(res); });`→启动后通过插件访问`http://localhost:3000/proxy`。
5. CSP(内容安全策略)绕过技巧
- 修改HTTP头:在插件的`manifest.json`中声明`permissions`为`http://target.com/*`→通过`chrome.webRequest.onBeforeSendHeaders`拦截请求→添加或删除`Content-Security-Policy`标头。
- 注入JS脚本:使用`content_scripts`在页面中插入iframe→加载代理页面→间接执行跨域请求(需规避CSP检测)。