使用PHP和curl设置Authorization标头

sea*_*lea 21 php rest curl

我们正在使用Commission Junction的REST服务,这需要我们在Authorization标头中发送API密钥.

我们像这样设置标题:

$ch = curl_init();
curl_setopt_array($ch, array(
  // set url, timeouts, encoding headers etc.
  CURLOPT_URL => 'https://....',
  // ...
));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  'Authorization: ' . CJ_API_KEY,
  'User-Agent: ' . OUR_USER_AGENT
));

$response = curl_exec($ch);
$info = curl_getinfo($ch);
Run Code Online (Sandbox Code Playgroud)

问题是Authorization没有发送标头(我们通过使用本地URL调试它,并执行一个var_export($_SERVER)显示User-Agent标头设置,但不是Authorization标头.)

如果我们将标题名称更改为X-Authorization,则会发送 - 但这对我们没有帮助,因为服务特别需要Authorization标题.

我们如何让PHP + cURL发送任意Authorization头?

sea*_*lea 30

Authorization头不包含在PHP的$_SERVER变量.要正确调试请求,您应该使用apache_request_headers()哪个显示我们正在Authorization按照我们想要的方式发送标头.

然后问题转移到确定什么放在Authorization标题给出一些非常糟糕的文档.

  • 我刚刚发现这个有用......大约两年了. (16认同)
  • 你不需要关闭它.这是一个有效的问题,你回答了它.有一天,其他人可能会发现这些信息非常有用. (6认同)