我正在尝试将 TestRail 和 Jenkins 集成在一起,并且我想使用 TestRail UI 脚本来创建新按钮。单击这个新按钮时,会向 Jenkins 发送 POST 请求。
我似乎无法从此 UI 脚本发送任何 GET/POST 请求。我尝试过 ajax、xhr 和 fetch,但它们都给了我错误
Refused to connect to {my_jenkins_url} because it violates the following Content Security Policy directive: "connect-src 'self' https://app.pendo.io https://data.pendo.io https://pendo-static-{...}-.storage.googleapis.com".
我不熟悉 ajax 和 CSP 的工作原理,我看过其他几篇关于它的文章,但没有任何方法可以解决这个问题。我需要在 TestRail 中设置什么吗?还是詹金斯?
在 Jenkins 中,我启用了这些 CORS 过滤器选项:
Access-Control-Allow-Origins: {my_testrail_url},{my_jenkins_url}
Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS
Access-Control-Allow-Headers: Authorization
Access-Control-Expose-Headers:
Access-Control-Max-Age:
目前,我只是想通过向 Jenkins 发送 GET 来获取面包屑来让它工作。以下是我发送请求的方式:
// Bind the click event to trigger the automated tests
$(myButton).click(
function() {
const authToken = btoa(`${JENKINS_USERNAME}:${JENKINS_USER_API_KEY}`);
var crumbURL = `https://${JENKINS_USERNAME}:${JENKINS_USER_API_KEY}@${JENKINS_URL}crumbIssuer/api/json`
$.ajax(
{
url: crumbURL,
dateType: "json",
type: "GET",
headers: {
"Authorization" : "Basic " + authToken,
//"Content-Security-Policy" : `connect-src 'self' ${crumbURL};`
},
success: function(data, textStatus, resp) {
App.Dialogs.message(
'GET request sent!',
'Confirmation'
);
console.log(data);
},
error: function(requestObject, error, errorThrown) {
console.error(`ERROR sending GET ${crumbURL}`);
App.Dialogs.message(
"There was an error retrieving the crumb. Please find more info on the console logs.",
"Error"
);
}
}
)
return false;
} // end function()
); // end .click()
...
...
我在 github 上找到了 这个 UI 脚本,但看起来它创建了一个额外的登录表单,我希望避免它,所以我没有完全复制它。有什么建议么?蒂亚!