Próbuję skonfigurować małą sekcję przesyłania na mojej stronie internetowej, aby użytkownik mógł przesłać obraz profilu. Używam proca z Google Cloud i testowania tego z localhost, ale otrzymuję te błędy:Błąd przy użyciu pakietu Meteor's Slingshot z Google Cloud z localhost
OPTIONS https://mybucket.storage.googleapis.com/ net::ERR_INSECURE_RESPONSE
I rysunek ten błąd jest z powodu mojej konfiguracji Cors, więc próbowałem najróżniejszych konfiguracje i nic nie działa.
To moja najnowsza konfiguracja CORS:
[
{
"origin": ["http://localhost:3000/"],
"responseHeader": ["Content-Type"],
"method": ["GET", "HEAD", "DELETE"],
"maxAgeSeconds": 3600
}
]
próbowałem go tak dobrze jak:
[
{
"origin": ["*"],
"responseHeader": ["*"],
"method": ["GET", "HEAD", "DELETE"],
"maxAgeSeconds": 3600
}
]
Nadal nic. Ten sam błąd, co poprzednio.
To jest mój kod serwera dla Slingshot:
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;
}
});
}
Oto klient strona Prześlij inicjacja:
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);
}
Wszystkie zmienne sprawdzić. Mój plik PEM sprawdza się i działa dobrze. Tak więc wystąpił błąd związany albo z Google Cloud, albo ze sposobem, w jaki ustawiłem mój plik CORS.
Każda pomoc zostanie doceniona.
Czy próbowałeś dodać POST do metod? na przykład '" method ": [" GET "," HEAD "," DELETE "," POST "]' – carlevans719
@ carlevans719 Tak, dodałem metodę POST. To była pierwsza logiczna rzecz, którą zrobiłem, ale nic z tego nie wynika. –
Czy chciałbyś zobaczyć błąd odpowiedzi w całości, a nie wyjątek, ale przychodzi mi na myśl kilka rzeczy: – Mussser