2017-01-19 5 views
0

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

Все работает отлично, когда файлы подаются изначально. Но когда скрипт на сервере 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

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

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

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