You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TestRail UI脚本无法发送GET/POST请求对接Jenkins求助

解决TestRail UI脚本调用Jenkins接口的CSP跨域问题

问题核心

你遇到的报错本质是TestRail的Content Security Policy (CSP) 限制了脚本的请求范围——TestRail默认的connect-src规则只允许向自身域名和Pendo相关服务发请求,浏览器会直接拦截指向Jenkins的请求,根本不会触发Jenkins的CORS校验,所以你在Jenkins里配置的CORS规则暂时起不到作用。

可行解决方案

方案1:使用TestRail内置API代理(推荐)

TestRail提供了官方的API代理功能,允许UI脚本通过TestRail自身转发请求到外部服务,完美绕过CSP限制。修改你的请求代码如下:

$(myButton).click(function() {
  const authToken = btoa(`${JENKINS_USERNAME}:${JENKINS_USER_API_KEY}`);
  // 用TestRail代理转发Jenkins请求,需对Jenkins URL做URL编码
  const proxyUrl = `/index.php?/api/v2/proxy?url=${encodeURIComponent(`https://${JENKINS_URL}crumbIssuer/api/json`)}`;
  
  $.ajax({
    url: proxyUrl,
    dataType: "json",
    type: "GET",
    headers: {
      "Authorization": "Basic " + authToken
    },
    success: function(data) {
      App.Dialogs.message('GET请求已发送!', '确认');
      console.log(data);
    },
    error: function() {
      console.error('获取crumb失败');
      App.Dialogs.message('获取crumb时出错,请查看控制台日志获取详情', '错误');
    }
  });
  return false;
});

这个方案无需修改任何服务器配置,完全符合TestRail的扩展规范,也是官方示例的标准实现方式。

方案2:修改TestRail的CSP配置(仅自托管版可用)

如果你使用的是自托管TestRail,可以通过修改Web服务器配置,将Jenkins域名加入TestRail的CSP规则:

  1. 找到TestRail对应Web服务器的配置文件(如Nginx的nginx.conf、Apache的httpd.conf)
  2. 更新CSP响应头的connect-src指令,添加你的Jenkins域名:
    Content-Security-Policy: connect-src 'self' https://app.pendo.io https://data.pendo.io https://pendo-static-*.storage.googleapis.com https://你的Jenkins域名;
    
  3. 重启Web服务器使配置生效

注意:云托管版TestRail无法修改CSP规则,只能使用方案1。

补充:Jenkins CORS配置校验

你当前的Jenkins CORS配置逻辑没问题,但要确保Access-Control-Allow-Origins中的TestRail域名是完整且准确的(包含协议、域名、端口,例如https://your-testrail-instance.com)。该配置只有在你通过方案2绕开TestRail的CSP限制后,才会实际生效。


内容的提问来源于stack exchange,提问作者Liam Goss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 18:49:56