Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在Chrome应用程序中加载AWS SDK_Javascript_Amazon Web Services_Amazon S3_Google Chrome App - Fatal编程技术网

Javascript 无法在Chrome应用程序中加载AWS SDK

Javascript 无法在Chrome应用程序中加载AWS SDK,javascript,amazon-web-services,amazon-s3,google-chrome-app,Javascript,Amazon Web Services,Amazon S3,Google Chrome App,我在一个chrome应用程序中用Javascript向S3 bucket写入代码,但似乎被权限阻止了 我必须包括aws sdk的本地副本: 否则我会得到一个: 拒绝加载脚本,因为它违反了以下内容安全策略 AWS SDK库随后出现以下故障: window.localStorage在打包的应用程序中不可用。改用chrome.storage.local。 我运气不好吗@Amazon,你能为chrome应用程序制作一个SDK版本吗?我刚刚测试了将SDK嵌入到Google提供的示例应用程序中,我成功地

我在一个chrome应用程序中用Javascript向S3 bucket写入代码,但似乎被权限阻止了

我必须包括aws sdk的本地副本:

否则我会得到一个:
拒绝加载脚本,因为它违反了以下内容安全策略

AWS SDK库随后出现以下故障:
window.localStorage在打包的应用程序中不可用。改用chrome.storage.local。


我运气不好吗@Amazon,你能为chrome应用程序制作一个SDK版本吗?

我刚刚测试了将SDK嵌入到Google提供的示例应用程序中,我成功地加载了它,并在启用CORS的情况下在我自己的Amazon S3 bucket中列出了对象

我确实收到了
窗口.localStorage
警告,但请注意,这是一个警告,只有在您使用
AWS.CognitoIdentityCredentials
时才会对您产生影响(可以解决此问题,有关更多信息,请参阅本文末尾)

我必须包含aws sdk的本地副本:

没错,编写Chrome应用程序时必须嵌入外部内容。这是因为Chrome对可执行代码的来源有严格的规定。我建议您阅读《Chrome应用程序开发人员指南》的“”部分,了解更多关于如何处理此类资源的信息,以及如何对无法嵌入的内容进行沙箱处理

附录:
window.localStorage
编辑:由于以下原因,v2.0.23之后不再需要此解决方案

如果您碰巧需要
AWS.CognitoIdentityCredentials
,您可以通过在SDK之前添加脚本标记来解决
窗口.localStorage
问题,如下所示:

<script type="text/javascript" src="localStorage.js"></script>
<script type="text/javascript" src="aws-sdk-2.0.23.min.js"></script>

请注意,
AWS.CognitoIdentityCredentials
在可能的情况下依赖于
window.localStorage
来缓存您的Cognito标识ID。对于单页应用程序,缓存此ID的需要应该不那么重要,因此可以使用上述技术禁用。如果您确实需要缓存,您可以查看API文档以获取标识ID并将其存储以备将来使用。您可能还想考虑编写一个,它允许您使用
窗口。localStorage
,以及引用外部内容和更宽松的CSP(如果需要)。

将localStorage设置为空对象没有任何作用-
窗口。localStorage
对我来说始终保持
null
window.localStorage = {};