cloud - 将 HTTP 标头传递给 Cloud Foundry 应用程序
问题描述
我正在尝试将 PHP 应用程序部署到 IBM Cloud 上的公共 Cloud Foundry 应用程序。此应用程序使用带有承载令牌的授权标头来验证 API 调用。但是,此令牌在到达我的代码之前被剥离,这阻止了 API 工作。
在 Cloud Foundry 应用程序的路由器日志中,我可以看到对应用程序发出的原始请求中没有包含任何原始标头。有没有办法让这些 HTTP 请求包含原始标头?
到目前为止,我似乎找不到任何可以实现这一点的东西,但想知道是否有其他人遇到过这个问题。
解决方案
授权是一个特殊的标头,可以包含敏感信息。默认情况下,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
推荐阅读
- django - FastAPI 生态系统是否具有类似于 Django 存储的功能?
- javascript - 如何遍历json对象数据并将字符串拆分为变量
- ruby-on-rails - 如何将我的 SQLite3 查询转换为 postgreSQL?
- c# - discord js如何检查消息是否有用户ID示例:.ban [userid]
- python - 尝试使用 coremltools 4.1 将模型转换为 coreml 不工作
- .net - 使用 Nant 问题在 Windows 10 上为 dotnet 2 dll 创建开发环境
- linux - .NET 5.0 - 从 Linux 上的 Docker 容器写入文本文件
- ignite - ignite 客户端返回:无法与任何主机建立连接
- c# - 在 Unity 游戏 C# 中从计时器中减去时间
- flutter - Flutter 小部件父级未更新