REST与CORS无法使用WebExtension内容脚本

问题描述 投票:0回答:1

我正在研究Firefox中的webextension,以便在工作中使用。扩展的目的是将我们的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-webextensions
1个回答
0
投票

我解决了这个问题。为了使WebExtension接收响应,URL需要在manifest.json中具有权限。添加:

"permissions": [ "url" ],

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

© www.soinside.com 2019 - 2024. All rights reserved.