【问题标题】:REST with CORS not working with WebExtension content-script带有 CORS 的 REST 不适用于 WebExtension 内容脚本
【发布时间】:2023-03-28 14:55:02
【问题描述】:

我正在 Firefox 中开发一个 web 扩展,供内部使用。扩展的目的是将我们的 ServiceNow 实例中的相关信息插入到 Nagios 主机/服务页面中。

我目前正在尝试将工单状态插入 Nagios 的历史选项卡。我的脚本如下所示:

var table = document.getElementById('id_historytab_table');
var table = table.getElementsByTagName('tbody');
var table = table[1];
var len = table.children.length

const url = "https://[domain].service-now.com/api/now/table/task?sysparm_limit=1&number="

for (i = 1; i <= len; i++) {
    var col = table.rows[i].cells[2];
    if (col.textContent.startsWith("TKT")) {
        var tkt = col.textContent;
        //console.log(tkt);
        //console.log(url+tkt);

        var invocation = new XMLHttpRequest();
        invocation.open("get",url+tkt, true);
        invocation.withCredentials = true;
        invocation.onreadystatechange = function() { 
            if(this.readyState == this.DONE) {
                //console.log('recieved');
                console.log(invocation.responseText);
                //console.log(JSON.parse(invocation.responseText).result[0].state);
            }
        }; 

        invocation.send();
    };
};

这成功地从历史选项卡的每一行获取票号并发出 GET 请求。我可以在我的 ServiceNow REST 日志中看到这些请求,并且看起来不错。但是,从未收到响应。

如果我从content-script.js 复制并粘贴以上内容并将其直接放入我的控制台,我就可以遍历行,获取票号,并成功接收来自 ServiceNow 的响应。所以这有效,但由于某种原因在 WebExtension 中无效。不过,我对扩展和 javascript 的了解快要结束了,但我不确定还能做什么。

【问题讨论】:

    标签: javascript rest cors firefox-addon firefox-addon-webextensions


    【解决方案1】:

    我发现了问题所在。为了让 WebExtension 接收响应,URL 需要在 manifest.json 中的权限下。添加:

    "permissions": [ "url" ],
    

    解决了问题,我立即开始看到我期待的响应机构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 2018-12-29
      • 2017-01-04
      • 2012-02-16
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多