Joomla не отправляет пользовательский заголовок

Итак, у меня есть приложение сервер-сервер. Сценарий PHP на сервере 1 в домене 1 устанавливает настраиваемый заголовок на странице (Authorization: Bearer 123456789). Сценарий на сервере 2 в домене 2 использует get_headers () для чтения заголовков.

Все работает нормально, когда файлы обслуживаются изначально. Но когда скрипт на сервере 1 включен в модуль Joomla, get_headers () не получает пользовательский заголовок.

В обоих случаях инструменты разработчика показывают пользовательский заголовок, но также и некоторые другие заголовки, которые не возвращает get_headers ().

Приведенный ниже код использует JFactory для установки заголовков, если загружен Joomla, но это тот же результат, что и header (). Joomla просто не передает пользовательский заголовок.

Я не понимаю Кто-нибудь имеет представление о том, что здесь происходит? Это не проблема SEF или htaccess.

 <?php

// Server 1

if(!class_exists("JFactory")){ // no Joomla

header('Authorization: Bearer 123456789');

} else { // Joomla framework loaded

$app = JFactory::getApplication();
$app->setHeader('Authorization: ', 'Bearer 123456789');
$app->sendHeaders();
}

Код на сервере 2:

<?php

// Server 2

$headers = get_headers("http://server1.com/");

foreach($headers as $header) {

echo $header ."<br/>";

}

Вывод из get_headers (), когда обслуживается нативно:

HTTP/1.1 200 OK
Date: Thu, 19 Jan 2017 12:44:35 GMT
Server: Apache
Authorization: Bearer 123456789
Content-Length: 0
Connection: close
Content-Type: text/html

Вывод из get_headers () при обслуживании Joomla:

HTTP/1.1 200 OK
Date: Thu, 19 Jan 2017 12:45:49 GMT
Server: Apache
Set-Cookie: 3c460b3da9ecb202e794816b4144c6ff=ja7mn4b4njov98lsv76kk8pvu2; path=/; HttpOnly
Vary: Accept-Encoding
Content-Length: 1264
Connection: close
Content-Type: text/html

Собственные заголовки, отображаемые инструментами разработчика:

Authorization: Bearer 123456789
Date: Thu, 19 Jan 2017 13:07:32 GMT
Server: Apache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Content-Length: 0
Content-Type: text/html
200 OK

Заголовки Joomla, отображаемые инструментами разработчика:

Pragma: no-cache
Date: Thu, 19 Jan 2017 12:19:24 GMT
Last-Modified: Thu, 19 Jan 2017 12:19:25 GMT
Server: Apache
Authorization: : Bearer 123456789
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Content-Length: 76888
Expires: Wed, 17 Aug 2005 00:00:00 GMT

0

Решение

Удалить двойную точку из вызова setheader:

$app = JFactory::getApplication();
$app->setHeader('Authorization', 'Bearer 123456789');
$app->sendHeaders();
0

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

Спасибо за предложение Йолет. Я проверил это и получил тот же результат.

Однако я нашел проблему. Сайт Joomla, устанавливающий заголовок, использует компонент под названием Site Lock. Это похоже на перевод сайта в автономный режим, но имеет несколько полезных функций для разработчиков.

По сути, Site Lock препятствовал обслуживанию страницы и просто возвращал заголовки со страницы блокировки (как и должно быть). Я не знаю, почему я не видел это раньше. Иногда просто не вижу леса за деревьями!

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector