我有一个JavaScript小部件,可通过在DOM中创建标签与我的Rails应用通信。有时,我会在服务器日志中看到格式错误的请求,其中URL被截断为255个字符:

http://myapplication.example/mycontroller/1/myaction?hostname=www.mycustomer.example&request[param_a]=3&request[param_b]=1&request[param_c]=0&request[param_d]=0&request[param_e]=3&request[param_f]=1&request[param_g]=4&request[param_h]=0&request[param_i]=5&request

在Google和Stackoverflow(What is the maximum length of a URL in different browsers?)中,似乎255个字符不是有效的URL限制。

这是我所知道的:
  • 这是一个偶发性问题,在所有请求上都不会发生
    发生这种情况时,
  • URL被截断为255个字符
  • 发生此错误时,用户代理不会记录在backtrace


  • 这是我不知道的:
  • 此错误发生在哪些类型的浏览器上?也许一些移动浏览器...

  • 引起该问题的最佳方法是什么?

    最佳答案

    解决根本原因的最好方法是不要使其成为GET,而是使其成为POST请求。

    QueryString的长度没有AFAIK设置的限制,因此实际限制无处不在。我知道4000对某些Web服务器是一个限制(不记得是IIS还是Apache,是否可以更改),但是某些浏览器的限制很可能要小得多。您没有获得用户代理的事实可能会强调它是移动浏览器,搜寻器或其他应用程序,而不是真正的浏览器。

    POST请求的处理要复杂一些,但是它们可以承载更大的“有效负载”,并且可以在服务器端进行配置。

    09-17 15:45