Загружая файл в DigitalOcean Spaces, получите «Доступ к XMLHttpRequest по адресу (url) из источника (url) заблокирован политикой CORS» - PullRequest
0 голосов
/ 22 марта 2020

Полная ошибка в консоли:

Доступ к XMLHttpRequest в (imageurl) из источника 'http://localhost: 3000 ' заблокирован политикой CORS: Ответ на предварительный запрос не проходит проверку контроля доступа: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Я попытался настроить конфигурацию CORS, чтобы разрешить PUT и POST для всех домены, но все равно получаю ошибку.

Код на стороне клиента выглядит следующим образом -

// digitalOcean.js
import AWS from 'aws-sdk'

const regionName = 'nyc3'
const accessKeyId = 'KEYID'
const accessSecretKey = 'SECRETKEY'
export const bucketName = 'BUCKETNAME'

const endpointUrl = `${regionName}.digitaloceanspaces.com`
export const bucketUrl = `https://${bucketName}.${endpointUrl}/`

const spacesEndpoint = new AWS.Endpoint(endpointUrl)
export const s3 = new AWS.S3({
  endpoint: spacesEndpoint,
  accessKeyId: accessKeyId,
  secretAccessKey: accessSecretKey,
})

и

// getItem.jsx
import * as digitalOcean from '../services/digitalOcean'

function uploadFile(file) {
  const params = { Body: file, Bucket: digitalOcean.bucketName, Key: file.name }
  digitalOcean.s3.putObject(params)
    .on('build', request => {
      request.httpRequest.headers.Host = digitalOcean.bucketUrl
      request.httpRequest.headers['Content-Length'] = file.size
      request.httpRequest.headers['Content-Type'] = file.type
      request.httpRequest.headers['x-amz-acl'] = 'public-read'
    })
    .send((err, data) => {
      if (err) return alert(JSON.stringify(err))
      // ...
    })
}

Есть идеи, в чем может быть проблема?

1 Ответ

1 голос
/ 22 марта 2020

Я в конечном итоге получил его, установив для Allowed Headers значение * также, например, -

screenshot1 screenshot2

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