3 votes

Erreur HTTP 400. La taille des en-têtes de la requête est trop importante.

Nous avons besoin d'envoyer une requête get avec plus de 16181 chars . Le maximum que nous pouvons envoyer en ce moment est : 15,861 Après cela, nous obtenons :

Erreur HTTP 400. La taille des en-têtes de la requête est trop longue.

C'est ce qui est configuré dans le registre comme une valeur DWORD :

MaxFieldLength: 65534 
MaxRequestBytes: 16777216 
UrlSegmentMaxLength: 32766

Et dans 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>

Dans HTTPERR j'obtiens :

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

Le journal coupe une partie de l'url.

Qu'est-ce que je rate ?

2voto

harrymc Points 394411

Les valeurs de MaxFieldLength y MaxRequestBytes doivent également être définis dans la section sous la clé HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters en tant que valeurs DWORD.

Pour plus de détails avec des captures d'écran, voir l'article
HTTP 400 - Mauvaise demande (En-tête de la demande trop long) .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X