Получение метода ListBuckets в AWS с использованием S3 API с реагировать? - PullRequest
0 голосов
/ 12 сентября 2018

Я получаю ListBuckets метод с использованием S3 Api.Это мой код реакции

import React, { Component } from "react";
export default class Listbuckets extends Component {

 handleClick = () => {
    var AWS = require('aws-sdk')
    // Set the region 
    AWS.config.update({
        region: "ap-south-1"
       });

    // Create S3 service object
 var s3 = new AWS.S3({apiVersion: '2006-03-01'});

    var params = {};
     s3.listBuckets(params, function(err, data) {
       if (err) console.log(err, err.stack); // an error occurred
       else   
       {  
        console.log(data);
      }       // successful response

     });
}
render() {
    return (
      <div className="container">
          <h1>This is the stats.</h1>
        <button onClick={this.handleClick}>Click Me</button>
        </div>
    )
  }
 }

Это конфигурация CORS, которую я включил для всех своих корзин.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

Но когда я запускаю эту реакцию, я получаю сообщение об ошибке типаthis

xhr.js:83 OPTIONS https://s3.ap-south-1.amazonaws.com/ 403 (Forbidden)
Failed to load https://s3.ap-south-1.amazonaws.com/: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
Error: Network Failure
    at XMLHttpRequest.<anonymous> (xhr.js:52) "NetworkingError: Network Failure
    at XMLHttpRequest.<anonymous> (http://localhost:3000/static/js/bundle.js:76976:34)"

Когда я запускаю тот же код в node.js, он показывает мне правильный ответ.Я не знаю, что мне не хватает в моем коде реакции.Вот мой код node.js

var AWS = require('aws-sdk');
// Set the region 
AWS.config.update({
    region: "ap-south-1"
   });

// Create S3 service object
s3 = new AWS.S3({apiVersion: '2006-03-01'});

var params = {};
 s3.listBuckets(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else   
   {    
       console.log(data)
    //    console.log(data.Buckets.map(x => x.Name))
  }       // successful respons

 });

Любая помощь приветствуется

1 Ответ

0 голосов
/ 13 сентября 2018

Метод ListBuckets в s3 не поддерживает cors.Это открытый выпуск в github

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