我想在我的網站上設置一個小小的上傳部分供用戶上傳個人資料圖像。我用彈弓與谷歌雲和從本地主機測試這一點,但我得到這些錯誤:從本地主機使用流星彈弓包與谷歌雲錯誤
OPTIONS https://mybucket.storage.googleapis.com/ net::ERR_INSECURE_RESPONSE
我想這個錯誤是因爲我的CORS的配置,所以我嘗試各種不同設置和沒有任何作品。
這是我最近CORS設置:
[
{
"origin": ["http://localhost:3000/"],
"responseHeader": ["Content-Type"],
"method": ["GET", "HEAD", "DELETE"],
"maxAgeSeconds": 3600
}
]
我試圖像這樣還有:
[
{
"origin": ["*"],
"responseHeader": ["*"],
"method": ["GET", "HEAD", "DELETE"],
"maxAgeSeconds": 3600
}
]
不過,什麼都沒有。與以前一樣的錯誤。
這是彈弓我的服務器代碼:
if(Meteor.isServer){
// Initiate file upload restrictions
Slingshot.fileRestrictions("userLogoUpload", {
//Only images are allowed
allowedFileTypes: ["image/png", "image/jpeg", "image/gif"],
//Maximum file size:
maxSize: 2 * 1024 * 1024 // 2 MB (null for unlimited)
});
// Google Cloud Directives
Slingshot.createDirective("userLogoUpload", Slingshot.GoogleCloud, {
bucket: Meteor.settings.public.GoogleCloudBucket,
GoogleAccessId: Meteor.settings.private.GoogleAccessId,
GoogleSecretKey: Assets.getText("xxxxxxxxxx.pem"),
// Uploaded files are publicly readable
acl: "public-read",
authorize: function(){
if(!Meteor.userId()){
throw new Meteor.error("Login Required", "Please log in to upload files");
}
return true;
},
key: function(file){
let user = Meteor.users.findOne(Meteor.userId());
return user.profile.username + "/" + file.name;
}
});
}
這裏的客戶端上傳啓動:
let uploader = new Slingshot.Upload("userLogoUpload");
uploader.send(document.getElementById("upload").files[0], function(error, downloadUrl){
if(!error){
console.log(downloadUrl);
} else{
console.error('Error uploading', uploader.xhr.response);
console.log(error);
}
所有的變量退房。我的文件檢出並正常工作。所以Google Cloud或我設置CORS文件的方式都必須有錯誤。
任何幫助,將不勝感激。
您是否嘗試將POST添加到方法中?例如'「method」:[「GET」,「HEAD」,「DELETE」,「POST」]' – carlevans719
@ carlevans719是的,我添加了POST方法。這是我做的合乎邏輯的第一件事,但沒有任何聯繫。 –
希望看到響應錯誤的全部,而不是例外,但有幾件事情想起來: – Mussser