«Ожидаемый токен отсутствует» в моем журнале Apache - PullRequest
1 голос
/ 21 декабря 2011

Мой сайт работает на Apache 2 с mod_perl и использует систему шаблонов Mason. Я не использую какую-либо систему аутентификации или какие-либо сеансы на своем веб-сайте, но иногда (случайно) я получаю эту ошибку:

Внутренняя ошибка сервера

Сервер обнаружил внутреннюю ошибку или неверную конфигурацию и был невозможно выполнить ваш запрос.

Пожалуйста, свяжитесь с администратором сервера, webmaster@admin.org и сообщить им о времени возникновения ошибки и обо всем, что вы могли сделал, что, возможно, вызвало ошибку.

Дополнительная информация об этой ошибке может быть доступна в сообщении об ошибке на сервере. журнал.

Кроме того, во время обнаружения ошибки 500 Internal Server Error пытается использовать ErrorDocument для обработки запроса.

В журнале ошибок соответствующая запись:

[Mon Dec 19 09:34:26 2011] [error] [client 127.0.0.1] Expected token not present

Строка версии сервера:

Apache/2.2.8 (Ubuntu) mod_apreq2-20051231/2.6.0 mod_perl/2.0.3 Perl/v5.8.8 Server

Мой браузер отправляет этот странный файл cookie:

Name:                   BC_BANDWIDTH
Content:                1324486772745,6811
Domain:                 example.org
Path:                   /
Send For:               Any kind of connection
Accessible to Script:   Yes
Created:                Wednesday, December 21, 2011 12:59:09 PM
Expires:                When I close my browser

Когда я его удаляю, я могу перезагрузить страницу, и она работает. Однако после пары щелчков проблема появляется снова.

Почему я получаю сообщение об ошибке в своем журнале ошибок? Как это исправить?

Ответы [ 2 ]

1 голос
/ 22 мая 2013

Поскольку вы опускаете оператор возврата в своем решении, вы должны были обвести исходящий оператор также в блоке eval . В противном случае вы можете ожидать первого созвездия, когда функция cookie_class вызывается с неопределенным значением, которое вызовет исключение. Поэтому

Заменить дополнительно

$jar->cookie_class(__PACKAGE__);

с

eval {$jar->cookie_class(__PACKAGE__)};

Наслаждайтесь!

1 голос
/ 31 мая 2012

Это из-за недопустимого файла cookie, установленного некоторыми утилитами в вашем приложении.

Я столкнулся с той же проблемой и не смог найти "кто" устанавливал недопустимый файл cookie. Поэтому мне пришлось редактировать Apache2 / Cookie.pm. Это будет исправление:

В приведенном выше примере в методе / подпрограмме fetch вы можете увидеть:

my $jar = $req->jar or return;

Просто прокомментируйте эту строку и вставьте эту новую строку:

my $jar = eval {$req->jar()};
...