当前位置: 首页 > 面试题库 >

在Chrome扩展程序中获取JSON

杨飞飙
2023-03-14
问题内容

我的Chrome扩展程序有小问题。

我只想从另一台服务器获取JSON数组。但是清单2不允许我这样做。我尝试指定content_security_policy,但是JSON数组存储在没有SSL证书的服务器上。

那么,不使用清单1怎么办?


问题答案:

该CSP不能引起你所描述的问题。您很有可能使用的是JSONP而不是纯JSON。JSONP在Chrome中不起作用,因为JSONP通过<script>在文档中插入标签而起作用,该标签src属性设置为Web服务的URL。CSP不允许这样做。

前提是您已在清单文件中设置了正确的权限(例如"permissions": ["http://domain/getjson*"],您将始终能够获取和解析JSON:

var xhr = new XMLHttpRequest();
xhr.onload = function() {
    var json = xhr.responseText;                         // Response
    json = json.replace(/^[^(]*\(([\S\s]+)\);?$/, '$1'); // Turn JSONP in JSON
    json = JSON.parse(json);                             // Parse JSON
    // ... enjoy your parsed json...
};
// Example:
data = 'Example: appended to the query string..';
xhr.open('GET', 'http://domain/getjson?data=' + encodeURIComponent(data));
xhr.send();

在将jQuery用于Ajax时,请确保不通过jsonp: false以下方式请求JSONP :

$.ajax({url:'...',
        jsonp: false ... });

或者,当使用时$.getJSON

$.getJSON('URL which does NOT contain callback=?', ...);


 类似资料:
  • 问题内容: 我正在尝试从弹出窗口访问activeTab DOM内容。这是我的清单: 我真的很困惑,背景脚本(持久性事件页:false)还是content_scripts是可行的方法。我已经阅读了所有文档和其他SO帖子,但对我来说仍然没有意义。 有人可以解释为什么我可能会用另一个。 这是我一直在尝试的background.js: 我只是从弹出控制台执行此操作: 我越来越: 更新: content.j

  • 问题内容: 我想创建一个Google Chrome扩展程序。具体来说,我想制作一个打包的应用程序,而不是一个托管的应用程序。我认为这限制了我使用JavaScript(和HTML / CSS)是否正确? 我的问题是我需要做一些复杂的数学运算(奇异值分解,因子分析),并且我不想在javascript中为此编写算法。Python已经有了我需要的功能的库(SciPy),但是我找不到任何可以使用python

  • 问题内容: 我正在尝试在扩展弹出窗口中使用Google开发人员AngularJS库,但出现错误。 错误:在k(chrome-extension:// jambnlbfljcfpomlclcgphfmkjfiphkb / lib / lib)的功能(未知源)处,Jb(chrome- extension://jambnlbfljcfpomlclcgphfmkjfiphkb/lib/angular.js

  • 问题内容: 后来的AngularJS(1.3 beta 19)使用。铬萃取中禁止这样做。 如何在 不允许评估的情况下 解决问题? 错误信息: 拒绝将字符串评估为JavaScript,因为在以下内容安全策略指令:“ script-src’self’chrome-extension- resource:”中不允许使用’unsafe-eval’作为脚本源。 堆栈跟踪: 更新:请参阅https://doc

  • 问题内容: 我有一个Chrome扩展程序。我需要从当前页面的HTML源进行分析。我在这里找到了各种带有背景页面和内容脚本的解决方案,但没有一个对我有帮助。这是我到目前为止所拥有的: manifest.json: background.html: content.js: 警报始终警报未定义。即使我在content.js文件中将回调函数更改为: 结果还是一样。我究竟做错了什么?也许我走错路了。我真正需

  • 问题内容: 我正在创建一个扩展程序,它将从网站上下载mp3文件。我正在尝试通过创建带有指向mp3文件的链接的新标签来实现此目的,但是chrome会继续在播放器中打开它而不是下载它。有什么方法可以创建一个弹出窗口,要求用户“另存为”文件? 问题答案: 快进了3年,现在GoogleChrome提供了API(自Chrome31起)。 在清单中声明许可后,可以通过以下调用启动下载: 如果要在脚本中生成文件