Запрос AWS S3 PUT с заранее заданным URL-адресом не работает в JavaScript - PullRequest
0 голосов
/ 29 марта 2019

Я использую лямбду, чтобы сгенерировать предопределенную подпись для загрузки файлов в корзину S3. Подпись, возвращенная лямбда, работает, когда я использую ее с почтальоном / CURL. Однако, когда я пытаюсь выполнить запрос PUT из моей программы, он присоединяет localhost к заданному URL. Я использую IIS на своем локальном компьютере в качестве веб-сервера. Может ли это быть что-то, связанное с конфигурацией IIS? Или я что-то не так делаю в коде или в самой конфигурации приложения?

http://localhost/admin/%22https://sky-testwebsite-upload.s3.amazonaws.com/myfiletoupload.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Date=20190328T231808Z&X-Amz-SignedHeaders=host&X-Amz-Security-Token=FQoGZXIvYXdzEJH%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDHkQ6M3FyxPqcLENgSLzAUmW1nKDxcQt29OwkBhwPYnGk1GTBXwfMVgGJ1DfeATPyg6QZyxgB02hdPYPFNogxmZ0g4g6EG2mGQrqYAfsLaWJtwyOZU4lS3eQCNlevwjGRqEPehhrfQD8kD5keqiagrA5%2FCAXETN9dSW%2FwQD9%2B%2FOWnBhUTPaHncDt9cRNtm6G64u8htrG9Yzo3d%2FylbbCtEKYAirbrHBOLOzzcq%2FwZWj%2FQ9eq13qiXFYAqZEKiRpl1EPCNZy8dLywOYI0fyatzyf%2FBo5aXO%2BihFNHIfHIO4rpve8KMlvkNGtedsoeUXXP5GJi6vyIRm%2BOKSQH%2BpP8JXyiGqfXkBQ%3D%3D&X-Amz-Credential=ASIAYG7KDJKY75ML2HOH%2F20190328%2Fap-southeast-2%2Fs3%2Faws4_request&X-Amz-Signature=6280eb6f7f2c3cc26ff32ec5a4f542eb1f5a495f2e2efba6006445fe16d4c3e7%22

Мой код ниже:

const xhr = new XMLHttpRequest();
xhr.open('PUT', preSignedURL);
xhr.onreadystatechange = () => {
  if(xhr.readyState === 4){
    if(xhr.status === 200){
      alert('File Ready to n upload. xhr.status: ' + xhr.status + 'xhrstatustext:' +xhr.statusText);

    }
    else{

      alert('Could not upload file.');
    }
  }
};
xhr.send(file);

1 Ответ

0 голосов
/ 29 марта 2019

Я понял это сам. URL-адрес, возвращаемый лямбда-функцией, был отформатирован неправильно. Все, что мне нужно было сделать, это удалить кавычки из первого и последнего, а после этого мой файл был загружен на S3.

var preSignedURL = preSignedURL.substring (1, preSignedURL.length-1);

Ура! * * 1005

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...