За последние 24 часа нас посетили 16977 программистов и 1294 робота. Сейчас ищут 1583 программиста ...

PHP и Last-Modified: / ETag

Тема в разделе "Вопросы от блондинок", создана пользователем Nagisa, 13 сен 2012.

  1. Nagisa

    Nagisa Активный пользователь

    С нами с:
    18 апр 2007
    Сообщения:
    6
    Симпатии:
    0
    Вопрос возник
    стал проверять все ли заголовки отдаются и обнаружил, что апач режет Last-Modified (а я-то думал что раз поставлен в коде так и проблем нет)

    те в PHP я явно выставляю

    Last-Modified: Tue, 07 Aug 2012 03:02:07 GMT
    ETag: "3a002a-35898-4787bad247200"

    (те через скрипт видно какие заголовки установлены)

    но в ответе апача их уже нет

    потом зависимость отдачи Last-Modified: удалось обнаружить - "Options All" его убивает
    но вот отдать ETag никак не получается

    при этом если апач отдает картинку-файл с диска то все отлично
    и етаг и все что надо

    куда копать ?


    корректность формирования заголовка проверяется просто - скриптом
    Код (Text):
    1. <?php
    2.                 header("Cache-control: public");
    3.                 header("Cache-control: max-age=9800");          
    4.                 header('Content-Type: ');
    5.                 Header("Last-Modified1: ".gmdate("D, d M Y H:i:s")." GMT");
    6.                 Header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
    7.                 header('Expires: '.gmdate("D, d M Y H:i:s", time()+90000).' GMT');
    8.                 header('ETag: "3a002a-35898-4787bad247200" ');              
    9.                 header('ETag1: "3a002a-35898-4787bad247200" ');              
    10.                 header('TEST: 235423 ');              
    11.  
    12.   echo '<table  border="0" >';
    13.     $hh=(headers_list());
    14.     $count = count($hh);
    15.     for ($i = 0; $i < $count; $i++)
    16.     {  echo '<tr><td>'.$hh[$i]."</td></tr>";   }
    17.   echo '</table>';
    18. ?>
    те массив установленных заголовков выводится после их установки

    результат смотрится тоже на серверной стороне

    Код (Text):
    1. <form method="post" action="" >
    2. <table cellspacing="2" cellpadding="2" border="1" align="center">
    3. <tr><td colspan="2" align="center"> Введите URL для анализа заголовков</td></tr><tr>
    4. <td>URL</td>
    5. <td><input type="text" name="URL" id="URL" size="160">
    6. </td>
    7. </tr>
    8. <tr><td colspan="2">
    9. <input type="submit" name="sendact" id="sendact" value="Анализ"   >
    10. </td></tr>
    11. </table>
    12. </form>
    13.  
    14. <?php
    15. if (strlen($_POST[URL])>2  )
    16.   {
    17.   echo '<table  border="0" >';
    18.     $url= $_POST[URL];
    19.     echo '<tr><td><b> URL="'.$url.'"</b></td></tr>';
    20.     $hh=(get_headers($url));
    21.     $count = count($hh);
    22.     for ($i = 0; $i < $count; $i++)
    23.     {  echo '<tr><td>'.$hh[$i]."</td></tr>";  }
    24.   echo '</table>';
    25.   }
    26. ?>
    те же результаты показывает и сторонний сервис http://www.rexswain.com/httpview.html - etag вырезается апачем.

    ps: PHP 5.2.5, Apache 2.0, Centos x86-64