Desenvolvi um aplicativo da web em PHP. Estou dando uma opção para o usuário atualizar vários problemas de uma vez. Ao fazer isso, às vezes o usuário encontra esse erro. Existe alguma maneira de aumentar o comprimento da URL no apache?
php
apache
http-status-codes
JPro
fonte
fonte
Respostas:
No Apache, o limite é um valor configurável
LimitRequestLine
,. Altere esse valor para algo maior do que seu padrão de 8190 se quiser oferecer suporte a um URI de solicitação mais longo. O valor está em /etc/apache2/apache2.conf . Caso contrário, adicione uma nova linha (LimitRequestLine 10000
) emAccessFileName .htaccess
.No entanto, observe que, se você está realmente chegando a esse limite, provavelmente está abusando
GET
. Você deve usarPOST
para transmitir esse tipo de dados - especialmente porque você até admite que está usando para atualizar valores. Se você verificar o link acima, notará que o Apache até diz "Em condições normais, o valor padrão não deve ser alterado."fonte
POST
. Nada sobre o uso de POST impede que você preencha o mesmo formulário com os campos que acabaram de ser postados, então não tenho certeza do que você quer dizer com isso.LimitRequestLine
em nenhum lugar do arquivo httpd.conf, basta adicionar a linha em qualquer lugar que desejar. Por exemplo:LimitRequestLine 100000
Com base na resposta de John, alterei a solicitação GET para uma solicitação POST. Funciona, sem ter que alterar a configuração do servidor. Então, procurei como implementar isso. As seguintes páginas foram úteis:
Exemplo de jQuery Ajax POST com PHP (observe a observação de dados postados sanitize) e
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
Basicamente, a diferença é que a solicitação GET tem o url e os parâmetros em uma string e envia um valor nulo:
enquanto a solicitação POST envia o url e os parâmetros em comandos separados:
Aqui está um exemplo prático:
ajaxPOST.html:
ajaxPOST.php:
Acabei de enviar mais de 12.000 caracteres sem problemas.
fonte
Eu tenho uma solução alternativa simples.
Suponha que seu URI tenha uma string
stringdata
muito longa. Você pode simplesmente dividi-lo em várias partes, dependendo dos limites do seu servidor. Em seguida, envie o primeiro, no meu caso, para escrever um arquivo. Em seguida, envie os próximos para anexar aos dados adicionados anteriormente.fonte
Recebi este erro depois de usar $ .getJSON () do JQuery. Acabei de mudar para postar:
fonte
Um trecho do RFC 2616: Hypertext Transfer Protocol - HTTP / 1.1 :
fonte