我有一个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限制。
这是我所知道的:
发生这种情况时,
这是我不知道的:
引起该问题的最佳方法是什么?
最佳答案
解决根本原因的最好方法是不要使其成为GET,而是使其成为POST请求。
QueryString的长度没有AFAIK设置的限制,因此实际限制无处不在。我知道4000对某些Web服务器是一个限制(不记得是IIS还是Apache,是否可以更改),但是某些浏览器的限制很可能要小得多。您没有获得用户代理的事实可能会强调它是移动浏览器,搜寻器或其他应用程序,而不是真正的浏览器。
POST请求的处理要复杂一些,但是它们可以承载更大的“有效负载”,并且可以在服务器端进行配置。