вторник, 21 августа 2012 г.

400 Bad Request Request Header Or Cookie Too Large

Самое просто решение - почистить куки. Если же сервер наш, можно подкрутить настройки серверов:

для nginx это
large_client_header_buffers 4 8k;

Можно выставить например 16к, но дальше будет ошибка
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.

Потому что надо увеличить эти же значения и для apache
LimitRequestFieldSize 8190

Можно выставить
LimitRequestFieldSize 16380

Но проблема может быть и по другой причине.
Включаем в nginx.conf строку

error_log  /var/log/nginx/error.log info;


И видим в логе

2012/11/28 13:15:42 [info] 77783#0: *1146484 client sent too long header line: "X-Forwarded-For: 1.2.123.24, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, ..." while reading client request headers, client: 127.0.0.1, server: _, request: "GET / HTTP/1.0", host: "site.ru"

Это признаки циклического редиректа, например в proxy_pass указан тот же порт, на котором сидит сам nginx (и так бывает иногда, да)

3 комментария:

  1. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  2. У меня при добавлении комментариев на одном из сайтов выдаёт:
    400 Bad Request
    Request Header Or Cookie Too Large
    nginx/1.2.6
    Куки - сбрасывал (чистил).

    ОтветитьУдалить
    Ответы
    1. Чистим за собой неудачные комменты.

      Если чистка куков не помогла - скорее всего это баг на сервере, и клиенту ничего не сделать. Пример такого бага есть выше.
      Можно поставить какой-нибудь webdeveloper (фф/хром) и смотреть эти хидеры и куки, не должно быть аномалий.

      Удалить