Установите разрешение для облачного запуска для доступа к методу POST

Я развернул свой проект с помощью облачной службы Google. Я добавил для allUser роль Cloud Run Invoker. Имея это разрешение, я могу вызывать службу с помощью метода GET. Но я не могу использовать метод POST. Помогите, пожалуйста. Спасибо


person HoangThang    schedule 29.11.2019    source источник
comment
Можете ли вы поделиться ошибкой, которую вы получаете при выполнении запроса POST? Также как у вас дела с постом? Дополнительная информация будет полезна, чтобы иметь возможность помочь вам в дальнейшем   -  person bhito    schedule 29.11.2019
comment
Аутентификация / авторизация Cloud Run на основе IAM не делает различий между GET и POST или любым другим методом HTTP в этом отношении. Скорее всего, с вашей стороны что-то не так.   -  person Ahmet Alp Balkan    schedule 30.11.2019
comment
@bhito `‹! DOCTYPE HTML PUBLIC - // W3C // DTD HTML 3.2 Final // EN ›‹title› 405 Недопустимый метод ‹/title› ‹h1› Недопустимый метод ‹/h1› ‹p› Недопустимый метод разрешено для запрошенного URL. ‹/p› `   -  person HoangThang    schedule 02.12.2019
comment
Это сообщение с вашего веб-сервера, а не сообщение Cloud Run!   -  person guillaume blaquiere    schedule 02.12.2019


Ответы (1)


Если вы достигнете своего Cloud Run с помощью команды GET HTTP, вы также можете получить его с помощью POST. Уровень безопасности Cloud Run, выполняемый Google Front End, отвечает только за проверку безопасности, а не за тип доступа.

Вы не должны получать ошибку 403 или 401, может быть, что-то вроде 501 не реализовано. Проверьте свой веб-сервер и вне Cloud Run убедитесь, что он принимает запрос POST.

person guillaume blaquiere    schedule 29.11.2019
comment
Спасибо @guillaume blaquiere за ваш комментарий, я проверил свое приложение на локальном хосте, оно работает, и я запустил его на вычислительном движке с nginx, он все еще работает, но когда я использовал облачный запуск и облачную сборку для автоматического развертывания, он не получил доступа. - person HoangThang; 02.12.2019
comment
В облачной оболочке (или в любой среде с установленным докером) вы можете выполнить эту команду docker run -p 8080:8080 gcr.io/<project id>/<containter name> -e <list of your required env var>. Затем протестируйте свой контейнер на порту 8080. У вас будет то же поведение, что и в Cloud Run. Что-то происходит в вашей сборке контейнера. Поделитесь своим кодом, если вам нужна дополнительная помощь - person guillaume blaquiere; 02.12.2019
comment
Спасибо @guillaume blaquiere. Это моя ошибка, я исправил ее, я звоню из другой службы с помощью http, но облако работает с использованием https, поэтому появляется это сообщение об ошибке. Раньше я использовал Compute Engine с Nginx, используя как http, так и https. - person HoangThang; 03.12.2019