跨站请求&浏览器插件

时间:2016-07-28 13:19:31

标签: javascript ajax cross-domain firefox-webextensions

我正在尝试使用“新”WebExtensions系统开发基本的Firefox插件。

我想

  1. 从网页中提取一些文字(由我拥有)
  2. 使用远程网站
  3. 对其进行评估
  4. 在同一页面中发布结果
  5. 问题是如何使用插件发出Web请求(第2点)。我发现我可以使用XMLHttpRequest,但是出于安全考虑,我无法访问远程路径。

    那是因为(我猜)javascript代码在页面内运行,即使我认为插件是......外部的。

    当然结果将是页面中,但我认为插件可以作为代理来发出此请求。那说我不知道​​怎么做,应该做什么。

    我不想使用一些奇怪的技巧(比如删除一些安全控制),我想以“正确”的方式做到这一点。

    我还不明白的是,插件是否可以在他们制作的页面中运行。

    编辑:好的,事实证明chrome文档实际上比mozilla更好。要实际使用XHR进行跨站点请求,您必须在清单中添加一行代码。

    {...
    "permissions": [
        "http://random.com/"
        ],
    }..
    

    我仍然不确定这是否是我做的目标的正确方法。

1 个答案:

答案 0 :(得分:0)

要实际使用XHR跨站点请求,您必须在清单中添加一行代码。

$(function() {
    var delay = 3,
        span = $('span'),
        posts = [1,2,32,42,5],
        looper = $.Deferred().resolve();

    $.each(posts, function(i, data) {
        looper = looper.then(function() {
            return $.ajax({
                data: {
                    json: JSON.stringify(data),
                    delay: delay
                },
                method: 'post',
                url: '/echo/json/',
                dataType: 'json'
            }).done(function(response) {
                span.append('Response:<br />');
                span.append(response + '<br />');
                $('span').append('Waiting ' + delay + ' seconds<br /><br />');
            });
        });
    });
});