PHP ve curl kullanarak Yetkilendirme başlığını ayarlama

2 Cevap php

Biz Authorization başlığında bir API anahtarı gönderilir gerektirir Commission Junction REST hizmetini kullanarak ediyoruz.

Biz böyle başlığını ayarlayın:

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

Sorun, Authorization başlığı (biz yerel bir url kullanarak ve bir var_export($_SERVER) hangi bir User-Agent başlığı ayarlanır gösterir yaparak bu debug gönderilen olmasıdır ama Authorization başlık.)

Biz başlık ismini değiştirirseniz X-Authorization, gönderildiği alır - ama hizmet özellikle Authorization başlık gerektiren bu bize yardım etmedi.

Nasıl PHP + cURL keyfi Authorization başlık göndermek için alabilirim?

2 Cevap

Authorization başlık PHP'nin $_SERVER değişkeni dahil değildir. Düzgün apache_request_headers() biz istedik tam olarak Authorization başlık naklediyoruz gösteren kullanmanız gereken bir isteği hata ayıklamak için.

Sorun daha sonra bazı oldukça kötü belgeleri verildi Authorization başlığında koymak için tam olarak ne bulmaktan geçti.

Bu yeni bir şey olup olmadığından emin değil, ama şimdi - başlık istemci tarafından ayarlandığında, daha sonra isteği Authorization-header $_SERVER dahildir. HTTP başlıkları önceden gözden kaçan bir şey olabilir HTTP_ ile $_SERVER dizide öneki olsun.

Ayrıca, apache_request_headers() Eğer bir web sunucusu olarak Apache kullanırken, sadece tanımlanan bir işlevdir. Nginx vs Yani herkes dışarı bırakılır.

Demo

: Sunucu tarafında

<?php
// server.php
var_dump($_SERVER['HTTP_AUTHORIZATION']);

Test

Bir web sunucusu (PHP 5.4 gerektirir) başlatın:

$ php -S 0.0.0.0:31337 -t .

Make sure server.php is in the current directory.

Test cURL kullanın:

$ curl -H 'Authorization: FOO' http://0.0.0.0:31337/server.php
string(3) "FOO"

Çalışır. :)