Chrome的清单与谷歌API(Chrome Manifest with Google API)

2019-10-18 22:11发布

我需要我怎样才能让我的镀铬清单延期,使服务器和应用程序之间的谷歌API谈一些建议。 精细的应用程序加载时,我直接指向它(不作为扩展名)。

但是我的问题是,当我加载它作为一个扩展我得到以下错误:

Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self' https://apis.google.com/".

该应用程序是建立与谷歌的日历API接口。

这是我的HTML头样子(本地):

<head>
    <link href='reset.css' rel="stylesheet" type="text/css">
     <link href='style.css' rel="stylesheet" type="text/css">
    <link href='animate-custom.css' rel="stylesheet" type="text/css">
     <script type="text/javascript" src="jquery.min.js"></script>
     <script src="https://apis.google.com/js/client.js?onload=onClientLoad" type="text/javascript"></script> 
    <script src="main.js" type="text/javascript"></script>
    <script type="text/javascript" src="moment_langs.js"></script>

    <title>Dashboard</title>
</head>

这是个什么样子,当其加载像(**脚本加载 - 猜API调用?):

<link href='reset.css' rel="stylesheet" type="text/css">
     <link href='style.css' rel="stylesheet" type="text/css">
    <link href='animate-custom.css' rel="stylesheet" type="text/css">
**<script src="https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.lm_l25KfNhA.O/m=client/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTM1DJ5OrFPvETO8O24EqSIF_JCoKQ/cb=gapi.loaded_0" async=""></script>**
     <script type="text/javascript" src="jquery.min.js"></script>
     <script src="https://apis.google.com/js/client.js?onload=handleClientLoad" type="text/javascript"></script> 
    <script src="main.js" type="text/javascript"></script>
    <script type="text/javascript" src="moment_langs.js"></script>

我的清单:

{
  "manifest_version": 2,
  "name": "My Dashboard",
  "version": "1.2",
  "content_security_policy": "script-src 'self' https://apis.google.com/; object-src 'self'",
  "permissions": [
    "webRequest",
    "*://*.googleapis.com/*",
    "*://*.apis.google.com/*"
  ],


    "chrome_url_overrides" : {
    "newtab": "index.html"
  }
}

Answer 1:

据有关文档内容安全策略的配置和更specificaly的对抗政策eval()

针对EVAL政策()和它的亲戚一样setTimeout( 字符串) setInterval( 字符串),以及新功能 (字符串)可以通过添加“不安全-EVAL”您政策放松[...]

然而,我们强烈建议这样做。 这些功能是臭名昭著的XSS攻击向量。

(重点煤矿)

因此,加入“不安全-EVAL”您内容securty政策可能是一个解决方案(但相当肯定不是一个好其他方面)。

Pinoyyid的建议使用普通的XMLHttpRequest可以证明一个更好的方法(如果有必要设置withcredentials属性为true )。



Answer 2:

下面是我的分机的例子。 在这种情况下,我调用驱动“垃圾” API。

            var xhr = new window['JSONHttpRequest']();

            xhr.open("POST", "https://www.googleapis.com/drive/v2/files/" + id + "/trash", true);
            xhr.setRequestHeader('Authorization', 'Bearer ' + token); // token comes from chrome.identity
            xhr.setRequestHeader('Content-Type', 'application/json');
            xhr.sendJSON(dmark);

而不是原始的XMLHttpRequest,我用它创建围绕XMLHttpRequest对象一个JSON封装一个JS库。



文章来源: Chrome Manifest with Google API