我正在尝试将PHP应用程序部署到IBM Cloud上的公共Cloud Foundry应用程序。此应用程序使用带有承载令牌的Authorization标头来验证API调用。但是,此令牌在到达我的代码之前被剥离,这阻止了API的工作。
在Cloud Foundry应用程序的路由器日志中,我看到没有向应用程序发出的原始请求中包含任何原始标头。有没有办法让这些HTTP请求中包含原始标头?
到目前为止,我似乎找不到任何能够实现这一目标的东西,但想知道是否还有其他人遇到过此问题。
授权是可以包含敏感信息的特殊标头。默认情况下,Cloud Foundry上的PHP构建包将配置的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