AS2Secure удаляет составной / подписанный тип контента из заголовков

Я пытаюсь получить AS2 MDN, используя PHP lib AS2Secure. Сообщение приходит и декодируется очень хорошо, но когда ответ выходит, он удаляет основное значение «multipart / подписано» из Content-Type,

Например, что-то вроде этого должно быть в главном заголовке для обозначения составного сообщения:

Content-Type: multipart/signed; boundary="----=_Part_8f23d0b4-8a42-4946-9928-4d12d9f7fc66.63"; protocol="application/pkcs7-signature"; micalg=SHA1

Однако, когда ответ на составное сообщение исчезает, я вижу это только в основных заголовках:

Content-Type: text/html; charset=UTF-8

Это вызывает ошибку на удаленном сервере, который ожидает, что сообщение определит свой тип контента как multipart.

Я отследил разделение составного типа контента до этого кода в AS2MDN.php:

// TODO : replace with futur AS2MimePart to separate content from header
if (strpos($content, "\n\n") !== false) $content = substr($content, strpos($content, "\n\n") + 2);

Если я удалю этот код, пропавший Content-Type: multipart/signed линия появляется в теле, но Content-Type: text/html все еще показывает в заголовках.

Есть идеи?

0

Решение

Это было вызвано тем, что среда PHP Laravel (которая обрабатывает маршрутизацию приложения) перезаписывала заголовки во время вывода.

Изменение этого кода в handle() метод в AS2server.php:

ob_end_clean();
// send headers
foreach ($mdn->getHeaders() as $key => $value) {
$header = str_replace(["\r", "\n", "\r\n"], '', $key . ': ' . $value);
header($header);
}

// output MDN
echo $mdn->getContent();

…в этот дружественный код Laravel:

$headers = [];

foreach ($mdn->getHeaders() as $key => $value) {
$headers[str_replace(["\r", "\n", "\r\n"], '', $key)] = str_replace(["\r", "\n", "\r\n"], '', $value);
}

return \Response::make($mdn->getContent(), 200, $headers); // Use native Laravel response.

…решил проблему!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]