whirlwind
TDD infected, paranoid
curl с подачей заголовков, баг?!
Задача: перенаправить запрос с несколько видоизмененными клиентскими заголовками, в частности с новым referer-ом. Для выполнения запроса используется curl. Новые заголовки сопоставляются курловскому хендлеру посредством curl_setopt($ch ,CURLOPT_HTTPHEADER,$hash), где $hash это ассоциативный массив в котором ключи соответствуют именам заголовков, а значения содержимому заголовков. Кроме REFERER все заголовки передаются/принимаются нормально. Но значение по ключу Referer перед отправкой для чего то обрабатывается как полный заголовок с идентификатором, т.е. curl ищет разделитель : и ставит то что до разделителя в качестве идентификатора заголовка. В результате сервер назначения получает не изначальный реферер, а новый заголовок вида
http: blablabla. Это видно по дампу getallheaders на сервере назначения, там такого вида заголовок
[http] => //www.bbb.com/uuu/aaa.php?action=add&id=1020
Вместо
[Referer] => http://www.bbb.com/uuu/aaa.php?action=add&id=1020
Делаю ход конем в момент подготовки заголовков для отправки
Теперь работает нормально, но непонятно, почему только для referer curl считает, что вместо значения заголовка указывается полный заголовок с идентификатором?
И еще вопрос: можно ли как нибудь получить содержимое http-запроса в таком виде, в котором оно было передано на сервер? Это нужно для того, что бы перенаправить post запрос не заморачиваясь повторной сборкой тела из переменных $_POST.
Задача: перенаправить запрос с несколько видоизмененными клиентскими заголовками, в частности с новым referer-ом. Для выполнения запроса используется curl. Новые заголовки сопоставляются курловскому хендлеру посредством curl_setopt($ch ,CURLOPT_HTTPHEADER,$hash), где $hash это ассоциативный массив в котором ключи соответствуют именам заголовков, а значения содержимому заголовков. Кроме REFERER все заголовки передаются/принимаются нормально. Но значение по ключу Referer перед отправкой для чего то обрабатывается как полный заголовок с идентификатором, т.е. curl ищет разделитель : и ставит то что до разделителя в качестве идентификатора заголовка. В результате сервер назначения получает не изначальный реферер, а новый заголовок вида
http: blablabla. Это видно по дампу getallheaders на сервере назначения, там такого вида заголовок
[http] => //www.bbb.com/uuu/aaa.php?action=add&id=1020
Вместо
[Referer] => http://www.bbb.com/uuu/aaa.php?action=add&id=1020
Делаю ход конем в момент подготовки заголовков для отправки
PHP:
while (list($k,$v) = each($client_headers)){
switch ($k)
case 'Referer':
$new_headers[$k] = "$k: $v";
break;
default:
$new_headers[$k] = $v;
И еще вопрос: можно ли как нибудь получить содержимое http-запроса в таком виде, в котором оно было передано на сервер? Это нужно для того, что бы перенаправить post запрос не заморачиваясь повторной сборкой тела из переменных $_POST.