如何正确检查是否随请求发送标头

时间:2015-07-29 15:05:16

标签: apache logging httpd.conf

我有一个应用程序向Restful API发出请求,并且应该发送一个名为X-PDONE-SESSION-ID的参数。我需要检查该标头是否随请求一起发送,或者不是,因此我已启用并配置如下:

/etc/httpd/conf/httpd.conf
LoadModule log_forensic_module modules/mod_log_forensic.so

我启用了VirtualHost,因此这是该VH的配置文件:

<VirtualHost *:80>
    ServerName admin.domain.local
    ServerAlias api.domain.local
    ServerAlias share.domain.local

    DocumentRoot /var/www/html/backend/web
    <Directory /var/www/html/backend/web>
        # enable the .htaccess rewrites
        AllowOverride All
        Order allow,deny
        Allow from All
    </Directory>

    ErrorLog logs/pdone-error.log

    # CustomLog with format nickname
    LogFormat "%h %l %u %t %r %{x-pdone-session-id}i %{Referer}i %{User-Agent}i %>s %b" common
    CustomLog logs/pdone-access.log common
</VirtualHost>

现在,以下几行应该完成工作:

LogFormat "%h %l %u %t %r %{x-pdone-session-id}i %{Referer}i %{User-Agent}i %>s %b" common
CustomLog logs/pdone-access.log common

但是这个%{x-pdone-session-id}i没有记录在日志文件中,我也尝试使用大写的值%{X-PDONE-SESSION-ID}i,但两者都没有。我有一个如下所示的日志文件:

192.168.3.1 - - [29/Jul/2015:10:22:19 -0430] "GET /app_dev.php/api/v1/reps/activity?_format=json&rid=00580000003AWtXAAW HTTP/1.1" 200 4369

我正在使用Postman Chrome扩展程序发出请求,我发送的标题如下图所示,否则代码将失败并出现非授权异常并且代码有效,为什么我在发送标头上看不到该标头?为什么没有登录该值?我在这里缺少什么?

enter image description here

注意:如果图像显示不正确,请右键单击图像并在新选项卡中打开

1 个答案:

答案 0 :(得分:1)

昵称common通常在主服务器配置中定义。只是不要将昵称LogFormat "%h %l %u %t %r %{x-pdone-session-id}i %{Referer}i %{User-Agent}i %>s %b" pdone_common 提供给其他日志格式,而是在主服务器中未定义的任何其他名称,这将是唯一的:

pg2button_Click

在我看到你的问题之前,我并不知道,但是在主服务器配置中定义的昵称无法在VHost配置中被覆盖。