恐怕我根本不明白这应该如何工作。slingshot 是如何知道找到我的 s3 存储桶的地址的?这完全由访问密钥决定吗?
这是我在 server/files.js 中的代码:
var imageDetails = new Mongo.Collection('images');
Slingshot.fileRestrictions("myImageUploads", {
allowedFileTypes: ["image/png", "image/jpeg", "image/gif"],
maxSize: 2 * 1024 * 1024,
});
Slingshot.createDirective("myImageUploads", Slingshot.S3Storage, {
AWSAccessKeyId: "AWSAccessKeyId",
AWSSecretAccessKey: "AWSSecretAccessKey",
bucket: "mybucketname",
acl: "public-read",
region: "us-west-1",
authorize: function () {
if (!this.userId) {
var message = "Please login before posting images";
throw new Meteor.Error("Login Required", message);
}
return true;
},
key: function (file) {
var currentUserId = Meteor.user().emails[0].address;
return currentUserId + "/" + file.name;
}
});
这是我的 settings.json 文件
{
"AWSAccessKeyId" : "my access key",
"AWSSecretAccessKey" : "my secret access key",
"AWSBucket" : "mybucketname"
}
我在浏览器中收到此错误:
跨域请求被阻止:同源策略不允许在https://mybucketname.s3-us-west-1.amazonaws.com/读取远程资源。(原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。
但是我的 portdata 存储桶中有一个 CORS 配置。
第一步,我想,有没有办法检查我的应用程序是否与我的 s3 存储桶进行了联系?就像我说的,我真的不明白弹弓是如何找到水桶的。