Cors Ошибка с AWS Lambda и .Net Core WebAPI - PullRequest
0 голосов
/ 27 июня 2019

Я создал .Net Core, AWS Lambda WebAPI.Локально тестируя, я столкнулся с проблемой CORS и добавил политику CORS, чтобы разрешить происхождение из моего домена.Это сработало.Приложение функционировало должным образом.

Мне нужна помощь в решении проблемы cors, возникшей после развертывания.После развертывания в AWS я получаю известную ошибку:


> Access to XMLHttpRequest at 'https://myLambdaEndpoint' from origin
> 'http://myWebsite' has been blocked by CORS policy: Response to
> preflight request doesn't pass access control check: No
> 'Access-Control-Allow-Origin' header is present on the requested
> resource.

Вот что я сделал:

Мой запрос с использованием Axios в React:

axios.post(`myEndpoint`, { FirstName, LastName, Email })
            .then(res => {
                if(res.errors && res.errors.length > 0) console.log(res.errors);
                else 
                {
                    this.setState({loading: false, registered: true});
                }
            })
            .catch(err => {alert(err); console.log(err)});
    } 

//Also tried

axios.post(`myEndpoint`, {headers: {'Access-Control-Allow-Origin': '*'}, FirstName, LastName, Email })
            .then(res => {
                if(res.errors && res.errors.length > 0) console.log(res.errors);
                else 
                {
                    this.setState({loading: false, registered: true});
                }
            })
            .catch(err => {alert(err); console.log(err)});
    }

в Startup.cs -> Настройка служб

services.addCors()

// Also tried

services.AddCors(options =>
            {
                options.AddPolicy("AllowOrigin",
                builder =>
                {
                    builder.WithOrigins("http://myWebsite")
                        .AllowAnyHeader()
                        .WithMethods("POST");
                });
            });

в controller.cs

        [EnableCors(origins: "http://myWebsite", headers: "*", methods: "post")]

моя политика s3 bucket cors для API, а также для веб-сайта

<CORSRule>
    <AllowedOrigin>myWebsite</AllowedOrigin>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

//Also tried

<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

Я также пытался добавить триггеры к лямбда-функции в aws.

Код состояния из предварительной проверки - 500. Также указано «Политика реферирования: no-referer-when-downgrade»Мне интересно, в этом ли проблема?

Заголовки ответа:

> Access-Control-Request-Headers: content-type 
> Access-Control-Request-Method: POST  
> Origin: http://myWebsite.com 
> Referer: http://myWebsite.com/

Кто-нибудь знает, как это исправить?Я часами пробовал вещи и заканчивал поиски.

1 Ответ

0 голосов
/ 09 июля 2019

Я решил проблему, спасибо Google или документации AWS.

Когда я создавал лямбда-развертывание ядра.net, мне также нужно было добавить шлюз API, а затем правильно его настроить.

В конфигурации мне нужно было настроить каждый http-метод, который я использовал в качестве ресурса, указать на него лямбда-функцию и установить все ответы http-статуса. Без этого шлюз API не разрешит коры.

Надеюсь, это поможет другим!

...