В нашей среде требуется использование исходящего прокси для внешних служб. Обычно это не проблема. В этом случае с Twilio, добавленный дополнительный заголовок прерывает клиента.
Исходящие заголовки:
POST /2010-04-01/Accounts/FOO/SMS/Messages.json HTTP/1.1
Authorization: Basic FOO==
User-Agent: twilio-php/3.10.0
Host: api.twilio.com
Accept: */*
Accept-Charset: utf-8
Content-Type: application/x-www-form-urlencoded
Content-Length: 108
Заголовки ответов:
HTTP/1.0 200 Connection established
HTTP/1.1 201 Created
Server: nginx
Date: Thu, 06 Jun 2013 14:39:24 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 551
Connection: close
X-Powered-By: PHP/5.3.11
Я могу предположить, что прокси-сервер добавляет дополнительный HTTP-заголовок.
Клиент Twilio проверяет:
list($head, $body) = ($parts[0] == 'HTTP/1.1 100 Continue')
Как я понимаю, существуют времена или версии curl, которые автоматически добавят заголовок Expect в запрос, и HTTP 100 будет возвращен в ответе, но в этом случае это не так, и ответ будет равен 200 Соединение установлено. Для чего стоит добавить пустой Expect: или Expect: бекон не изменил результаты.
Я бы предпочел не слишком сильно взламывать клиента Twilio, и мне особенно хотелось бы избежать добавления || $parts [0] == 'HTTP/1.0 200 Connection установлено', как это кажется грязным.
Можно ли отправить заголовок запроса в том, что будет подавлять/скрывать дополнительный заголовок? Или, вариант завитка, который я не вижу, чтобы его игнорировать?
Исходящий прокси-сервер Linux/Squid