Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set Authorization header using PHP and curl

Tags:

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?

like image 286
searlea Avatar asked Aug 20 '09 09:08

searlea


People also ask

How do I pass basic auth with cURL?

To use basic authentication, use the cURL --user option followed by your company name and user name as the value. cURL will then prompt you for your password.

How do you pass the Authorization bearer token in cURL?

Sending the Bearer Token with a Curl POST request is similar to sending the Bearer Token with a Curl GET request. POST data is passed with the -d command-line option, and the authorization header and the bearer token are passed with the -H command-line option.

How do I pass the Authorization header in GET request?

To send a GET request with a Bearer Token authorization header, you need to make an HTTP GET request and provide your Bearer Token with the Authorization: Bearer {token} HTTP header.


1 Answers

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.

like image 124
searlea Avatar answered Oct 10 '22 13:10

searlea