Ошибка http 400 поле заголовка запроса слишком длинное

Если вы ежедневно пользуетесь интернетом, вы наверняка сталкивались с неполадками сети. Иногда вместо желаемой страницы браузер показывает код ошибки. Когда веб-сервер и клиент (т. е. браузер) общаются друг с другом, они передают сообщения о состоянии. И только когда возникает ошибка, появляется соответствующее сообщение. Ошибка HTTP 400 говорит, что с запросом клиента что-то пошло не так. Что значит ошибка 400 Bad Request и как её исправить?

Как исправить ошибку 400 Bad Request

Способы исправления ошибки 400 Bad Request.

Что такое ошибка 400 Bad Request

Со статусом ошибки веб-сервер показывает статус запросов. Если сервер возвращает запрос с ошибкой 200 (которую при обычном сёрфинге не видно), это означает, что всё в порядке – запрос был успешным, и желаемый контент был передан. Другое дело, когда появляются ошибка 400 bad request или 500, так как они указывают на несколько возможных проблем. Все ошибки 1xx являются информационными, 2xx – успешные запросы, 3xx и далее означает, что передача данных прошла успешно, но клиент должен выполнить дополнительный шаг. Обычно это связано с обменом информацией, который браузер делает автоматически. В сообщениях об ошибках дела обстоят несколько иначе. В то время как ошибки 5xx связаны с сервером, 4xx относятся к ошибочным запросам клиента.

Почему это происходит

Это значит, что сам запрос каким-то образом стал неправильным. HTTP-протокол не был соблюдён (по крайней мере, согласно веб-серверу), поэтому запрос не может быть обработан. Сервер интерпретировал запрос как ошибочный или даже вредоносный, поэтому не отображает содержимое страницы. Причины таких неполадок обычно связаны с используемым браузером или с неправильным вводом данных пользователем:

  • Неправильный URL – если пользователь вводит неправильный адрес или, например, использует специальные запрещённые символы.
  • Неправильные файлы cookie – если файлы cookie в вашем браузере устарели или не соответствуют содержимому, это тоже может стать причиной появления ошибки 400 Bad Request.
  • Устаревшие записи DNS – кэш DNS может содержать данные, которые ссылаются на неверные IP-адреса.
  • Слишком большие файлы – если вы пытаетесь загрузить большие файлы, сервер может отказаться их принимать. Он классифицирует это как «Bad Request» (плохой запрос).
  • Слишком длинный заголовок – для определения запроса при общении клиента и сервера используется заголовок. Некоторые веб-серверы устанавливают максимальный предел для его длины.

Ошибка 400 Bad Request

Причины довольно разнообразны, поэтому сразу определить, что вызвало «HTTP 400 Bad Request» невозможно. Однако, если целевой сервер использует IIS 7.0, IIS 7.5 или IIS 8.0, более подробную информацию можно получить из кода ошибки:

  • 1 – недопустимый заголовок пункта назначения;
  • 2 – недопустимый заголовок глубины;
  • 3 – недопустимый заголовок операции;
  • 4 – недопустимый заголовок перезаписи;
  • 5 – неверный заголовок перевода;
  • 6 – недействительный запрос;
  • 7 – недопустимая длина содержимого;
  • 8 – недействительный таймаут;
  • 9 – недействительный токен блокировки.

Ошибка 400 вступает в игру не только при сёрфинге. Такую ошибку от сервера также могут получать и другие программы, такие как клиенты электронной почты.

Как исправить ошибку 400

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

Проблема с браузером

Ошибка HTTP 400 возникает, если заголовок HTTP слишком длинный. В принципе, заголовки не имеют ограничения по размеру, однако целевой сервер, возможно, установил предел. Заголовок состоит из нескольких полей, в которых определены запросы и ответы. Если оба абонента соответствуют параметрам, запрашиваемые данные будут передаваться без проблем. Если это не сработает, появится сообщение об ошибке. Поскольку процесс связан с обменом данными между браузером и сервером, а Bad Request обычно вызван проблемами с клиентом, вероятно, причиной ошибки является браузер. Лучший способ проверить, может ли ваш браузер по умолчанию быть причиной проблемы – временно переключиться на другой.

Если с помощью другого браузера доступ к странице получить удалось, вернитесь к исходному браузеру и удалите все файлы cookie (если вы ещё этого не сделали). Куки-файлы передаются в заголовке. Это значит, что сервер узнает о вашем предыдущем посещении. Если браузеру приходится обрабатывать слишком много запросов, заголовок может превышать ограничение длины. Если это проблема с сетью сохранится, и ошибка 400 будет возникать даже на YouTube, полностью переустановите браузер или сбросьте его настройки по умолчанию. В Firefox введите about:support. Здесь вы найдёте много полезной информации, которая поможет обнаружить ошибки. Даже если вы обратитесь в службу поддержки, всё же важно иметь эти данные. На этой странице есть кнопка «Очистить Firefox». После нажатия расширения и некоторые настройки будут удалены, но текущие параметры сохранятся.

Удаление ненужных данных в Firefox:

  • войдите в параметры из главного меню;
  • перейдите на вкладку «Конфиденциальность»;
  • нажмите «Удалить файлы cookie»;
  • повторите попытку доступа к сайту, проблема должна быть решена.

Очистить Firefox

В Internet Explorer используйте кнопку «Сброс» или «Восстановить значения по умолчанию». Она находится в настройках на вкладке «Дополнительно». Поскольку Internet Explorer воспринимает кэш и cookie как настройки, их также рекомендуется удалить. Удаление ненужных данных в Internet Explorer:

  • Инструменты – Свойства обозревателя;
  • Общие – История – Настройки;
  • Просмотр файлов.

Вы можете находить эти файлы cookie и удалять их вручную регулярно.

Функция сброса параметров в Chrome доступна в системных настройках. Браузер сохранит ваши личные данные, такие как пароли и история, а всё остальное будет сброшено до исходного состояния. Закройте браузер и перезапустите его, чтобы изменения вступили в силу. Удаление ненужных данных в Google Chrome:

  • зайдите в настройки;
  • в поле поиска введите «cookie», затем нажмите «Настройки контента»;
  • в разделе «Файлы cookie» нажмите «Все файлы cookie и данные сайта»;
  • выберите конкретный файл cookie, чтобы удалить его.

Очистить данные в Google Chrome

Вирусы

Причиной возникновения 400 Bad Request могут быть вирусы, попавшие на ПК из интернета. Откройте свой антивирус и запустите полное глубокое сканирование системы. Большинство популярных программ имеют схожие функции и меню, поэтому проблем возникнуть не должно. Дождитесь окончания сканирования ПК. Если вирусы были найдены, откорректируйте настройки, удалите их и перезагрузите ПК. Если же проблемы обнаружены не были, переходите к следующему шагу.

Проблемы у интернет-провайдера

К сожалению, описанные выше решения не всегда решают проблему. Тогда вам следует обратиться за помощью в другое место. Частота появления ошибки (только на одном сайте или на всех сразу) подскажет, куда следует обратиться за помощью. Если код ошибки 400 возникает только на определённом сайте, и попытки её исправить не увенчались успехом, вы можете связаться с администратором ресурса или оператором сайта. Если ошибка появляется на всех страницах, и вы не можете пользоваться интернетом, обратитесь к своему провайдеру. В любом случае, служба поддержки может помочь вам.

В обеих ситуациях вы должны предоставить столько информации, сколько сможете. Она включает в себя все попытки, которые вы уже предприняли, чтобы избавиться от ошибки. С другой стороны, вам также необходимо предоставить информацию о вашей системе: какую ОС и браузер вы используете? Есть ли установленные расширения? Используете ли вы брандмауэр или прокси? Вся эта информация поможет оператору и веб-мастеру решить проблему. Если вы недавно изменили ISP или интернет-провайдер очень медленный или ненадёжный, то веб-трафик с вашего ПК на любой сайт в интернете может быть повреждён. Интернет-провайдер может перенастроить некоторые из своих настроек (например, ввести новые прокси-серверы или кешировать), что вызывает нестабильность. Возможным признаком проблем здесь является то, что вы не сможете просматривать сайты.

Проблемы с .NET Framework

Ошибка 400 Bad Request может возникнуть в результате повреждения или неудачного обновления библиотеки .NET Framework. Скачайте с официального сайта Microsoft последнюю версию плагина и переустановите его. Перезагрузите ПК и проверьте доступ к сайту.

Проблемы с антивирусом

Некоторое антивирусное ПО блокирует сайты и контент, который считается нежелательным или вредоносным. При этом может возникнуть сбой сети. Попробуйте отключить сканирование системы в антивирусе или просто завершить процесс. Если после этого ошибка исчезнет, обновите свой антивирус или скачайте любой другой.

Проблема с брандмауэром

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

Проблемы с windows

Если ваш компьютер недостаточно защищён, могут возникнуть всевозможные проблемы, в том числе HTTP 400. Включите автоматические обновления безопасности от Microsoft и очистите реестр. Сделать это можно с помощью специальных утилит, например, CCleaner. На некоторых сайтах социальных сетей и игр вам предлагается загрузить и запустить специальное ПО, которое позволит напрямую взаимодействовать с другими людьми в интернете (без использования веб-браузера). Это ПО, если оно написано неправильно или даже незаконно, может повредить весь HTTP-трафик с вашего ПК. Избавиться от такого нежелательного софта может быть очень сложно. В худшем случае вам, возможно, придётся переустановить свою операционную систему.

СОВЕТ. Если на вашем компьютере установлено два или более браузера, проверьте доступ к сайту на всех из них. Если на каком-либо браузере вам всё же удастся получить доступ к сайту без ошибок, используйте только его, а остальные удалите или обновите. Если вы столкнулись с проблемой на довольно небольшом сайте, посетите некоторые из таких крупных сайтов, как Amazon, Ebay, Google, Microsoft или Yahoo. Если проблема возникает только на небольших ресурсах, это указывает на кривой трафик с вашего ПК. 

Как видите, избавиться от ошибки 400 можно по-разному. Если администрация сайта ответит, что проблема возникает только у вас, тогда обратитесь к своему поставщику интернета. Возможно, исправить неполадки можно с помощью нескольких простых настроек ПК. Если вы знаете ещё какие-либо способы борьбы с ошибкой 400, поделитесь с нашими читателями в комментариях.

Some of my users are getting the following error sometimes when they request some of the pages of my site:
Bad Request — Request Too Long HTTP Error 400. The size of the request headers is too long

It seems to happen only in Firefox.

Deleting the users cookies does help.

What I don’t understand is the following: I thought that cookies are appended to every request. Why is it that only one or two of my pages show this error and most do never?

It is also not dependent on the server page. If the user requests
http://example.com/user/Myname
he might get the error.
If he just changes the capitalization of the URL it works again (like http://example.com/user/myname). (I am running IIS which does not care too much about capitalization).

For the browser the two URLs are different, for the server they aren’t.

Any idea what is happening?

Cœur's user avatar

Cœur

36.9k25 gold badges193 silver badges262 bronze badges

asked Feb 8, 2013 at 18:20

Sparhawk's user avatar

It seems that there were too many cookies after all. I made sure that there were not so many and it is working now.

GatesReign's user avatar

GatesReign

8261 gold badge9 silver badges23 bronze badges

answered Feb 24, 2013 at 13:09

Sparhawk's user avatar

SparhawkSparhawk

1,5171 gold badge13 silver badges28 bronze badges

1

Some of our users also ran into this same exception on IE 8 for some our our intranet sites hosted in IIS. The issue turned out to be related to using Kerberos authentication where a user belongs to many active directory groups.

We found solutions from the following Microsoft Support Articles:

  • HTTP 400 — Bad Request (Request Header too long)» error in Internet Information Services (IIS)
  • Problems with Kerberos authentication when a user belongs to many groups

The fix for us was to set the following registry keys with increased values and/or create them if they didn’t exist:

  • HKEY_LOCAL_MACHINESystemCurrentControlSetServicesHTTPParametersMaxFieldLength DWORD (32bit) — assigned value data 32000 (Decimal)
  • HKEY_LOCAL_MACHINESystemCurrentControlSetServicesHTTPParametersMaxRequestBytes DWORD (32bit) — assigned value data 8777216 (Decimal)

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesHTTPParameters] «MaxFieldLength»=dword:00007d00 «MaxRequestBytes»=dword:0085ee00

answered Feb 4, 2014 at 19:23

mservidio's user avatar

mservidiomservidio

12.7k8 gold badges58 silver badges84 bronze badges

1

Solution 1

delete all domain cookie from your browser

In Firefox 53

  1. Alt -> Tools -> Page Info
  2. Security
  3. View Cookies
  4. Remove All

enter image description here

In Chrome
check this superuser solution
enter image description here

Solution 2

  1. Install Web Developer extension ( Firefox ,Chrome , Opera)
  2. go to cookies tab -> Delete Domain Cookies like below screenshot

enter image description here

Solution 3

  • use incognito mode and see if it works for you

More details:

I had the same problem in Chrome and using a list from SharePoint.

after diagnosing with Chrome developer dashboard’s network tab. I checked the headers and find the large cookie starting with the name WSS_exp and removing all of them from chrome cookie manager resolved my problem

answered Nov 28, 2013 at 6:13

Iman's user avatar

ImanIman

17.8k6 gold badges79 silver badges90 bronze badges

2

Another reason for this error stems from the user being in too many active directory groups. More modern SSRS versions do not have this problem.

It appears that the list of AD groups get passed in along in an HTTP header. Older versions of SQL Server Reporting Services have a header size limitation. So if a user is in a excessive number of groups, the easiest fix will be to remove unneeded groups.

If removing groups is not an option, you should be able to edit the web.config file and increase the limit. You can see how to do that here…
https://www.mssqltips.com/sqlservertip/4688/resolving-the-maximum-request-length-exceeded-exception-in-sql-server-reporting-services/

answered Apr 9, 2021 at 14:17

Jason Geiger's user avatar

Jason GeigerJason Geiger

1,86218 silver badges32 bronze badges

This answer is only in the case of using the browser Local Storage to store users’ data.

Because the Local Storage has a limit of 5MB per domain, it’s never cleared on its own, and there is no expiry date to remove data. When the local storage reaches the 5MB limit then starts storing data as cookies. Later, when the size of cookies reaches 1MB, the browser shows the 400 error (the size of the request headers is too long).

In this case, it is better to clear the unnecessary data from the local storage after using them.

answered Aug 2, 2022 at 2:38

Mohammad Karimi's user avatar

Mohammad KarimiMohammad Karimi

4,1612 gold badges21 silver badges19 bronze badges

I used ViewData instead of TempData, and issue solved.

answered Apr 13, 2020 at 13:38

Bassel's user avatar

BasselBassel

1332 silver badges7 bronze badges

We need to send get request with more than 16181 chars .
The most we can sent at this time is: 15,861
After that we get:

HTTP Error 400. The size of the request headers is too long.

This is what configured in registry as a DWORD value:

MaxFieldLength: 65534 
MaxRequestBytes: 16777216 
UrlSegmentMaxLength: 32766

And in IIS:

maximum allowed content length 2147483647
maximum url length 2147483647
maximum url length 2147483647

web config:

  <requestFiltering>
    <requestLimits maxAllowedContentLength="2147483647" maxUrl="2147483647" maxQueryString="2147483647" />
  </requestFiltering>

<bindings>
  <netTcpBinding>
    <binding name="largeTcpBinding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="2147483647" maxReceivedMessageSize="2147483647" portSharingEnabled="false" transactionFlow="false" listenBacklog="2147483647">
      <security mode="None">
        <message clientCredentialType="None" />
        <transport protectionLevel="None" clientCredentialType="None" />
      </security>
      <reliableSession enabled="false" />
    </binding>
  </netTcpBinding>
  <webHttpBinding>
    <binding name="largeRestFullBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" transferMode="Streamed">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
    <binding name="largeRestFullBindingSecoundEndPoint" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" transferMode="Streamed">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </webHttpBinding>
  <wsHttpBinding>
    <binding name="largeSoapBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </wsHttpBinding>
  <mexHttpBinding>
    <binding name="mexHttpBinding" />
  </mexHttpBinding>
</bindings>

  <system.web>
    <compilation debug="true" targetFramework="4.6" />
    <httpRuntime maxQueryStringLength="999999" maxUrlLength="999999" relaxedUrlToFileSystemMapping="true" targetFramework="4.6" />
    <machineKey decryptionKey="" validationKey="" />
  </system.web>

In HTTPERR I get:

2020-02-17 17:31:01 172.16.144.50 59371 172.16.144.50 80 HTTP/1.1 GET LONGURL- 400 - RequestLength -

The log cuts part of the url.

What am I missing?

For Me I Spent days looking into the issue. Reading blobs and solutions, cleared cache, set max limit of header size to a bigger number, nothing worked. Eventually it would fail.

This issue did not occur if i redploy my application but over a period of time this would start coming up,which made me realize it might be adding in memory.

I was calling another API from my project where we created the request and sent it and got the data.

 public async Task<DataList> GeDataList()
        {
            Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", await _tokenProvider.GetBearerToken());

            Client.DefaultRequestHeaders.Add("X-CorrelationId", Guid.NewGuid().ToString());

            var requestMessage = new HttpRequestMessage()
            {
                Method = HttpMethod.Post,
                RequestUri = new Uri($"{Config.apiurl}{string.Format(Config.id, id2 == null ? id1 : id2)}")
            };
            requestMessage.Headers.Add(Constants.TRACE_HEADER, "true");
            requestMessage.Headers.Add(Constants.SUBSCRIPTION_KEY_HEADER, Config.APIKey);
            requestMessage.Content = new StringContent(JsonConvert.SerializeObject(requestdata), null, "application/json");
 ...................................
 ...................................
 ................................... 
}

Now this was the culprit Key

 Client.DefaultRequestHeaders.Add("X-CorrelationId", Guid.NewGuid().ToString());

Without even seeing it, this Client was a class Level variable of HttpClient. Creating a single instance of HttpClient is okay, but you have to realize that

.Add Header method, always appends to a key and does not override. Many people assume it to be key value.It is actually key and aaray of values. So each requests keeps on adding the correlation Id a s new object to the array. And eventually this becomes a large amount of header

Fix: You can clear the key first

if(Client.DefaultRequestHeaders.Contains("X-CorrelationId")) {
    Client.DefaultRequestHeaders.Remove("X-CorrelationId");
}
Client.DefaultRequestHeaders.Add("X-CorrelationId", Guid.NewGuid().ToString());

You would still need to handle the conquerency issues because multiple conquerent request might update and override your headers.

How the Header section Grew over time

Ошибка 400 Request Header Or Cookie Too Large в веб-сервере Nginx встречается достаточно редко. Данная ошибка означает, что отправленный запрос к веб-серверу слишком большой и был отклонен. Это может происходить по разным причинам.

Например, такое бывает, когда идет переход к веб-сайту из поисковой системы, и какой-то заголовок оказался слишком длинным. В этом случае Nginx «не ожидал» такого большого объёма в заголовке и сбросил соединение. В этой статье будет рассмотрено описание данной ошибки и как ее можно исправить.

Ошибка 400 Request Header Or Cookie Too Large воспроизводится, когда размер заголовков HTTP/HTTPS запроса больше допустимого предела. Например, браузер отправляет слишком много Cookie файлов или отправленный запрос к веб-серверу имеет слишком большой размер.

Запрос принято разделять на две части: заголовки — где находится общая информация и мета данные, и тело запроса. Тело запроса, как и заголовок может быть разного размера — как маленьким, так и большим и его размер как правило не вызывает никаких проблем. Однако если в настройках веб-сервера задан параметр на ограничение длины заголовка запроса, то есть вероятность получить данную ошибку. Скриншот с ошибкой изображён ниже:

H3ieJyKkIgENAAAAAElFTkSuQmCC

Как исправить ошибку Request header or cookie too large в Nginx

Для исправления данной ошибки (если вы администратор веб-сервера Nginx) необходимо увеличить максимальный размер заголовка при помощи изменения параметра large_client_header_buffers. Если же вы обычный пользователь веб-сайта, на котором возникла данная ошибка то необходимо дождаться пока ошибку исправит администратор ресурса.

Для исправления данной ошибки со стороны веб-сервера Nginx необходимо подкорректировать параметр large_client_header_buffers. Данный параметр принимает 2 числа, например 4 и 8 (которые заданы по умолчанию). Первое число — значение, которое задаёт максимальное число буферов, а второе число отвечает за размер буфера, в который считывается заголовок запроса. В второй параметр задаётся в килобайтах.

Данную строку необходимо добавить в секцию http конфигурационного файла конфигурационного файла Nginx или в секцию server для определённого сайта. Конфигурационные файлы веб-сайтов в Nginx обычно хранятся в /etc/nginx/conf.d/ или в /etc/nginx/sites-available/ (в зависимости каким образом был установлен Nginx — при помощи стандартных репозиториев операционной системы или при помощи репозитория Nginx).

Для корректировки значения можно задать числа 8 и 64 подходящие для хранения больших заголовков. В итоге параметр будет выглядеть следующим образом:

large_client_header_buffers 8 64k;

yjWvEa8rErlc8auw9WzuMjlZ0YaWREXGpDL3QiU0PfU1EY+z0qg+BtMpqf3XHRHV0bqtMpL5I14QT5lXNV9CIaYzdXeQ5R9qCEqdicER1ZADfi9WIuPPTwr0fjbVKelISDzC6I2KQPngkCCPK5ME7i91b7MRzA1k0QpQf+P93n2cesT31fAAAAAElFTkSuQmCC

После того как были внесены изменения в конфигурационный файл необходимо перезапустить Nginx при помощи команды:

sudo systemctl reload nginx

Выводы

В этой небольшой статье была рассмотрена ошибка 400 Request Header Or Cookie Too Large Nginx. Если у вас есть доступ к серверу, на котором расположен сайт, на котором возникает данная ошибка, то вы можете исправить ее за несколько минут. Если у вас остались вопросы, спрашивайте в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Понравилась статья? Поделить с друзьями:
  • Ошибка http 400 запрос url
  • Ошибка html5 что это такое
  • Ошибка html5 video not properly encoded
  • Ошибка html5 video file not found как исправить
  • Ошибка html при резервном копировании 1с