Joomla不发送自定义标题

时间:2017-01-19 14:54:50

标签: php apache joomla

所以我有一台服务器到服务器应用程序。服务器1上的PHP脚本,域1在页面中设置自定义标头(授权:承载123456789)。服务器2上的脚本域2使用get_headers()来读取标头。

当文件本地提供时,一切正常。但是当服务器1上的脚本包含在Joomla模块中时,get_headers()不会检索自定义标头。

在这两种情况下,开发人员工具都会显示自定义标头,但也会显示一些与get_headers()返回的标头不同的标头。

如果加载了Joomla,下面的代码使用JFactory来设置标题,但使用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

Joomla提供的get_headers()输出:

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

2 个答案:

答案 0 :(得分:0)

从setheader调用中删除双点:

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

答案 1 :(得分:0)

感谢Yoleth的建议。我测试了这个并获得了相同的结果。

但是我发现了这个问题。设置标题的Joomla站点使用名为Site Lock的组件。这类似于将网站放弃,但为开发人员提供了一些不错的功能。

基本上,Site Lock阻止了页面的提供,只是从锁定页面返回标题(应该如此)。我不知道为什么我之前没有看到它。有时只是看不到森林的树木!