将 HTTP Headers 传递给 Cloud Foundry 应用程序

Passing HTTP Headers to a Cloud Foundry App

我正在尝试将 PHP 应用程序部署到 IBM Cloud 上的 public Cloud Foundry 应用程序。此应用使用带有 Bearer 令牌的授权 header 来验证 API 调用。但是,此令牌在到达我的代码之前被剥离,这阻止了 API 工作。

在 Cloud Foundry 应用程序的路由器日志中,我可以看到向应用程序发出的原始请求的原始 header 中的 none 已包含在内。有没有办法让原始 header 包含在这些 HTTP 请求中?

到目前为止,我似乎找不到任何可以实现此功能的东西,但想知道是否有其他人遇到过这个问题。

授权是一种特殊的 header,它可以包含敏感信息。默认情况下,Cloud Foundry 上的 PHP buildpack 将配置的 Apache HTTPD 不会将授权传递给脚本,因为这可能会将敏感信息泄露给脚本。

您应该可以通过添加以下设置来允许它:https://httpd.apache.org/docs/2.4/en/mod/core.html#cgipassauth

如果您将 .htaccess 文件添加到您的应用程序并将 CGIPassAuth On 放入该文件,那应该会使 Authorization header 通过。或者,您可以这样配置 -> https://docs.cloudfoundry.org/buildpacks/php/gsg-php-config.html#engine-configurations

或者,您可以在使用 PHP buildpack 时启用 out-of-the-box 中存在的 mod_openidc。这是启用基于 OAuth2 的登录的一种非常简单的方法。 https://github.com/zmartzone/mod_auth_openidc

例如:https://github.com/dmikusa-pivotal/static-site-oidc-example

希望对您有所帮助!

参考:https://github.com/cloudfoundry/php-buildpack/issues/190#issuecomment-433998851