【问题标题】:Set permission for cloud run to access POST method设置云运行权限以访问 POST 方法
【发布时间】:2019-11-29 10:46:13
【问题描述】:

我使用谷歌的云运行服务部署了我的项目。我为 allUser 添加了一个角色,即 Cloud Run Invoker。有了这个权限,我可以用 GET 方法调用服务。但我不能使用 POST 方法。请帮我。谢谢

【问题讨论】:

  • 您可以分享您在执行 POST 请求时收到的错误吗?还有你是怎么发帖的?更多信息将很有用,以便能够进一步帮助您
  • Cloud Run 的基于 IAM 的身份验证/授权不区分 GET 与 POST 或任何其他 HTTP 方法。你这方面很可能有问题。
  • @bhito ` 405 方法不允许

    方法不允许

    请求的 URL 不允许该方法。

    `
  • 这是来自您的网络服务器的消息,而不是 Cloud Run 消息!

标签: google-cloud-platform google-cloud-run


【解决方案1】:

如果您使用 GET HTTP 动词访问 Cloud Run,您也可以使用 POST 访问它。 Cloud Run 的安全层由 Google Front End 执行,只负责检查安全性,而不是访问类型。

您不应收到 403 或 401 错误,可能是 501 Not Implemented 之类的错误。检查您的网络服务器并在 Cloud Run 外部验证它是否接受 POST 请求。

【讨论】:

  • 感谢@guillaume blaquiere 的评论,我在 localhost 上检查了我的应用程序,它运行了,我已经在使用 nginx 的计算引擎上运行它,它仍然运行,但是当我使用云运行和云构建时对于自动部署,它无法访问。
  • 在 cloud shell(或任何安装了 docker 的环境)上你可以执行这个命令docker run -p 8080:8080 gcr.io/<project id>/<containter name> -e <list of your required env var>。然后在端口 8080 上测试您的容器。您将拥有与 Cloud Run 相同的行为。在您的容器构建中发生了一些事情。如果您需要更多帮助,请分享您的代码
  • 谢谢@guillaume blaquiere。这是我的错误,我修复了它,我使用 http 从其他服务调用,但使用 https 运行云,所以它会引发该错误消息。之前,我使用 Compute Engine 和 Nginx 同时使用 http 和 https
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多