访问 AWS EB PHP 5.4 上的 http X_* 标头
Posted
技术标签:
【中文标题】访问 AWS EB PHP 5.4 上的 http X_* 标头【英文标题】:Access to http X_* headers on AWS EB PHP 5.4 【发布时间】:2017-05-24 19:11:59 【问题描述】:我已将 Wordpress 部署到 AWS EB 平台 php 5.4.45。当我使用 cookie 授权从 Angular 前端向 API 发出请求时,我需要包含 X_WP_NONCE
标头,否则,Wordpress 将忽略我的身份验证 cookie。
问题在于,在 EB 部署中,$_SERVER
变量中没有 X_WP_NOCE
。也没有HTTP_X_WP_NONCE
。根本没有随机数。
看起来所有以X_*
为前缀的标头都被删除了。
curl -XGET -H 'A: this works' -H 'X_A: this does not work' http://example.com/
var_dump($_SERVER);
--->
array(76)
...
["HTTP_A"]=>
string(19) "this works"
...
// But no HTTP_X_A variable
)
很遗憾,X_WP_NONCE
是 wordpress 核心的一部分,我无法编辑此代码。
如何告诉 EB 将 X_*
标头传递给 php?
谢谢,
更新 1: apache_request_headers() 确实看到了所需的标头。
【问题讨论】:
什么是 AWS EBT 平台?没有缩写为 EBT 的服务。你是说 Elastic Beanstalk 吗? @MarkB Elastic Beanstalk,人们偶尔称之为EBT 豆茎是指豆类植物的茎。如果您要(错误地)将其拆分为两个词,那将是“Bean Stalk”而不是“Beans Talk”。 考虑到在 Google 搜索“AWS EBT”时,这个问题是最重要的结果,我认为可以很安全地得出结论,没有人在野外将 Elastic Beanstalk 称为“EBT”。我建议使用“EB”以避免混淆,因为这是 Stack Overflow 上的缩写。 【参考方案1】:由于我已将自定义 wp-config.php
提交到 repo(它从环境变量中读取密钥和密码,请不要嘘),我可以添加一个临时解决方法
if (function_exists('apache_request_headers'))
$all_headers = apache_request_headers();
$_SERVER['HTTP_X_WP_NONCE'] = $all_headers['HTTP_X_WP_NONCE'];
【讨论】:
以上是关于访问 AWS EB PHP 5.4 上的 http X_* 标头的主要内容,如果未能解决你的问题,请参考以下文章
AWS Cognito 可以在 EB 上的 Node/Express/React 应用程序中使用吗?