tampermonkey 中文文档 下载 App

GM_xmlhttpRequest:脚本跨域请求与 connect 域名声明

GM_xmlhttpRequest 是 GM 函数里最重要也最需要谨慎的一个:它让脚本绕过同源策略,向任意域名发 HTTP 请求。官方文档对它的参数、回调与安全约束有长篇说明,这里抓主干。

基本形态

GM_xmlhttpRequest({
  method: "GET",
  url: "https://api.example.com/data",
  headers: { "User-Agent": "my-script" },
  onload: (response) => console.log(response.responseText),
  onerror: (error) => console.log(error)
});

函数接收一个 details 对象,核心字段:

前置条件一:grant 声明

// @grant GM_xmlhttpRequest

前置条件二:connect 域名白名单

@connect 声明脚本允许请求的域名(含子域):

// @connect api.example.com
// @connect self          // 脚本当前运行的站点
// @connect localhost

官方文档的要点:

常用行为细节

安全视角

这个函数是脚本「往外送数据」的主要通道:一个恶意脚本完全可以把你的页面数据打包发往第三方服务器。装脚本前对声明了 GM_xmlhttpRequest 的脚本多做一步安全判断。

权限受限时

MV3 下 Site Access 被设为「在特定站点上」时,官方明确警告脚本更新、GM_xmlhttpRequest 等功能会坏,见Site Access 限制。