403 Ошибка доступа, возвращаемая из браузера, возможно, вызвана AWS - PullRequest
4 голосов
/ 30 января 2020

У меня есть мое серверное веб-приложение на AWS. Я получаю сообщение об ошибке «Отказано в доступе» XML, если я пытаюсь обновить страницу. Когда я смотрю в консоль, он не показывает вывод. Код отлично работает на localhost, но при прямом эфире выдает ошибку 403.

Я нашел вопрос , очень похожий на , за исключением того, что я не использовал CloudFront.

enter image description here

Как найти потенциальную причину этой проблемы?

enter image description here

Обновление

Я решил это и опубликовал ответ в разделе ответов. Однако теперь у меня есть часть 2 этого вопроса.

Как мне сделать так, чтобы клиент мог напрямую вызывать мой URL следующим образом:

https://URL.com/listing/LISTING_ID

Right Теперь, если я попытаюсь вызвать его напрямую во время передачи LISTING_ID ошибки страницы. Это как-то связано с Isomorphi c ReactJs?

Я попытался использовать Digital Ocean в качестве службы веб-хостинга вместо AWS. Происходит та же ошибка.

Ответы [ 4 ]

3 голосов
/ 06 февраля 2020

Я решил это, переместившись с AWS на Nginx для хостинга.

И добавил это в etc / nginx / sites_available / default

location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                #try_files $uri $uri/ =404;
                try_files $uri /index.html;
        }

Причина, по которой это так Это происходит потому, что мое приложение было приложением с одной страницей. При обновлении браузер запрашивает сервер, а сервер не обрабатывает запросы.

3 голосов
/ 30 января 2020

Amazon S3 вернет ошибку 403 с таким сообщением по ряду причин, но самая распространенная, которую люди не ожидают, это когда объект не существует. Вы получите эту ошибку, а не 404.

https://aws.amazon.com/premiumsupport/knowledge-center/s3-troubleshoot-403/

0 голосов
/ 12 февраля 2020

Правильно ли вы установили CORS на стороне сервера? При правильной настройке CORS ваш клиентский код JS может получить доступ к другому серверу из его источника.

0 голосов
/ 09 февраля 2020

В вашем вопросе недостаточно информации, чтобы понять проблему (какую ошибку вы получаете, каковы ваши настройки, что вы подразумеваете под «непосредственным вызовом»?).

Тем не менее, мой Предполагается, что вы размещаете одностраничное приложение на NginX. Вы установили для страницы по умолчанию индекс. html, поэтому при вызове пути root приложение обслуживается, но при вводе пути маршрута в адресной строке вы получаете 404.

Если это так, эту проблему легко решить. Вы звоните https://URL.com/listing/LISTING_ID, а NginX пытается найти в этом месте ресурс c. Вам нужно перехватить ответ 404 и вместо этого вернуть файл index. html. Затем ваш клиент нажмет ваш маршрутизатор React, и вы получите ожидаемую страницу.

Добавьте это в NginX config:

error_page 404 = 200 /index.html;
...