首页 > 解决方案 > 将 HTTP 标头传递给 Cloud Foundry 应用程序

问题描述

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

在 Cloud Foundry 应用程序的路由器日志中,我可以看到对应用程序发出的原始请求中没有包含任何原始标头。有没有办法让这些 HTTP 请求包含原始标头?

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

标签: cloudibm-cloudcloud-foundryserverless

解决方案


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

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

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

或者,您可以启用在使用 PHP buildpack 时开箱即用的 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


推荐阅读