tags:

views:

3072

answers:

2

We're using Commission Junction's REST service, which requires we sent an API key in the Authorization header.

We set the header like this:

$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);

The problem is that the Authorization header isn't sent (we debugged this by using a local url and doing a var_export($_SERVER) which shows a User-Agent header is set, but not the Authorization header.)

If we change the header name to X-Authorization, it gets sent - but this hasn't helped us as the service specifically requires the Authorization header.

How do we get PHP + cURL to send an arbitrary Authorization header?

+5  A: 

The Authorization header isn't included in PHP's $_SERVER variable. To properly debug a request you should use apache_request_headers() which shows we were sending the Authorization header exactly as we wanted.

The problem then moved on to figuring out exactly what to put in the Authorization header given some pretty bad documentation.

searlea
How do I close this question as irrelevant now?
searlea
You don't need to close it. It was a valid question and you answered it. Someone else may find this information very useful one day.
Darrel Miller
Okey doke... I've marked this as the accepted answer.
searlea
A: 

Arunabh Das - How do I transmit encrypted password for authorization in PHP? - Arunabh Das

Arunabh Das
Probably you should better ask this as a new question, not post it as an answer. (The "Ask Question" button is in the top right of the page)
sth