0

我将 Wordpress 部署到 AWS EB 平台 PHP 5.4.45。当我使用 cookie 授权从 Angular 前端向 API 发出请求时,我需要包含X_WP_NONCE标头,否则,Wordpress 将忽略我的身份验证 cookie。

问题是在 EB 部署中没有X_WP_NOCE变量$_SERVER。也不存在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: apa​​che_request_headers() 确实看到了所需的标头。

4

1 回答 1

0

由于我已经自定义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'];
}
于 2017-01-10T10:31:38.197 回答