2011-11-13 50 views
234

Tôi tự hỏi liệu bạn có thể thêm tiêu đề tùy chỉnh vào yêu cầu HTTP cURL trong PHP hay không. Tôi đang cố gắng mô phỏng cách iTunes lấy tác phẩm nghệ thuật và sử dụng các tiêu đề không chuẩn này:Các tiêu đề tùy chỉnh PHP cURL

X-Apple-Tz: 0 
X-Apple-Store-Front: 143444,12 

Làm cách nào để thêm các tiêu đề này vào yêu cầu?

Trả lời

506
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'X-Apple-Tz: 0', 
    'X-Apple-Store-Front: 143444,12' 
    )); 

http://www.php.net/manual/en/function.curl-setopt.php

+53

Bạn xứng đáng nhận được cookie – SebastianView

+12

@SebastianView Và anh ấy xứng đáng một phiên;) – Turtle

+0

Xác nhận, cảm ơn bạn. Tôi đã cố gắng để đẩy vào như một danh sách JSON. Sai rồi. Chính xác. – Andy

116

Sử dụng cú pháp sau

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"http://www.example.com/process.php"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$vars); //Post Fields 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$headers = [ 
    'X-Apple-Tz: 0', 
    'X-Apple-Store-Front: 143444,12', 
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Encoding: gzip, deflate', 
    'Accept-Language: en-US,en;q=0.5', 
    'Cache-Control: no-cache', 
    'Content-Type: application/x-www-form-urlencoded; charset=utf-8', 
    'Host: www.example.com', 
    'Referer: http://www.example.com/index.php', //Your referrer address 
    'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0', 
    'X-MicrosoftAjax: Delta=true' 
]; 

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

$server_output = curl_exec ($ch); 

curl_close ($ch); 

print $server_output ; 
+15

Bạn xứng đáng nhận được cookie quá – SebastianView

+2

Giả mạo chuỗi tác nhân người dùng có vẻ như là một ý tưởng tồi với tôi. [Đây là những gì thông số HTTP nói] (https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43). – starbeamrainbowlabs

+1

@SebastianView bạn nhận được một cookie! bạn nhận được một cookie! bạn nhận được một cookie! mọi người đều có một cookie! – Dheeraj

0

Dưới đây là một trong những chức năng cơ bản:

/** 
* 
* @param string $url 
* @param string|array $post_fields 
* @param array $headers 
* @return type 
*/ 
function cUrlGetData($url, $post_fields = null, $headers = null) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    if ($post_fields && !empty($post_fields)) { 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
    } 
    if ($headers && !empty($headers)) { 
     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    } 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    $data = curl_exec($ch); 
    if (curl_errno($ch)) { 
     echo 'Error:' . curl_error($ch); 
    } 
    curl_close($ch); 
    return $data; 
} 

Cách sử dụng Ví dụ:

$url = "http://www.myurl.com"; 
$post_fields = 'postvars=val1&postvars2=val2'; 
$headers = ['Content-Type' => 'application/x-www-form-urlencoded', 'charset' => 'utf-8']; 
$dat = cUrlGetData($url, $post_fields, $headers); 
Các vấn đề liên quan