作者:Gbom2402851125 | 2023-09-03 11:28
GET请求的长度是否有限制?
1> Ed Guiness..:
不在RFC中,不,但有实际限制.
HTTP协议不对URI的长度设置任何先验限制.服务器必须能够处理它们所服务的任何资源的URI,并且如果它们提供可以生成这种URI的基于GET的表单,它应该能够处理无限长度的URI.如果URI长于服务器可以处理的长度,服务器应该返回414(Request-URI Too Long)状态(参见10.4.15节).
注意:服务器应该谨慎依赖于大于255字节的URI长度,因为某些较旧的客户端或代理实现可能无法正确支持这些长度.
2> Vinko Vrsalo..:
这篇文章总结得很好
简介:它依赖于实现,因为RFC中没有指定的限制.使用多达2000个字符(IE的限制)是安全的.如果你在接近这个长度的任何地方,你应该确保你真的需要那么长的URI,也许一个替代设计可以解决这个问题.
即使用于发送数据,URI也应该是可读的.
良好的写作,但URI可读性与GET与POST无关.目的是为Web定义RESTful API,以区分请求类型的功能差异.HTTP GET请求可能倾向于用户可读的超链接,但这不是他们的目的,只是一次使用.http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3
对不起,你只是在这里被误导了.REST很容易描述HTTP协议,因此虽然术语本身可能会在GET和POST之后发布,但它仅用于描述它们的用途和用途.我必须在这里呼吁权威,因为你没有和我争论,你正在和Roy Fielding争论,他写了*HTTP规范并发明了"REST".同样,您链接的文章涉及人类可读的URI,它代表HTTP使用的一小部分:"短(尽可能).*这使得它们易于记下或拼写或记住*.".
URI的目的不是为Web定义RESTful API.完全没有.http://www.w3.org/Provider/Style/URI.html
我不和罗伊菲尔丁争论,我正在与你对菲尔丁所说的解释.事实上,你正在向后解释报价,他说HTTP/1.1允许人们以最好的方式做REST,而不是HTTP/1.1的目的是做REST.我真的不知道他说的方法存在的原因(这是,他们的目的)是适合RESTful架构.他说,如果您的应用程序与REST有意义的场景相匹配,您应该使用它来获得最佳行为.[http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm#sec_6_1]
正确.然而,GET&POST的目的是.问题是询问HTTP GET请求.您假设他意味着在网站上找到的超链接,旨在提供人类可读性.这是GET HTTP的一个特殊用法,但远非唯一的用途.
不,这不是GET&POST的目的*.REST体系结构是在HTTP的GET和POST方法发明很久之后发明的.此外,即使在做REST应用程序时,我也强烈支持尽可能使用可读的URI.见http://redrata.com/restful-uri-design/
3> OneWorld..:
正如用户Erickson所要求,我发表我的评论作为答案:
我已经在IE8,IE9,FF14,Opera11,Chrome20和Tomcat 6.0.32(全新安装),服务器端的Jersey 1.13上做了一些测试.我使用了jQuery函数$ .getJson和JSONP.结果:所有浏览器允许最多5400个字符.FF和IE9最多可以达到6200个字符.以上所有内容均返回"400 Bad request".我没有进一步调查是什么导致400.我找到的最大值我很好,因为在我的情况下我需要大约2000个字符.
4> Joakim Karls..:
规范不限制HTTP Get请求的长度,但不同的浏览器实现它们自己的限制.例如,Internet Explorer具有以2083个字符实现的限制.
我已经在IE8,IE9,FF14,Opera11,Chrome20和Tomcat 6.0.32(全新安装),服务器端的Jersey 1.13上做了一些测试.我使用了jQuery函数$ .getJson和JSONP.结果:所有浏览器允许最多5400个字符.FF和IE9最多可以达到6200个字符.以上所有内容均返回"400 Bad request".我没有进一步调查是什么导致400.我找到的最大值我很好,因为在我的情况下我需要大约2000个字符.
5> 小智..:
W3C毫不含糊地否认这是一个神话
http://www.w3.org/2001/tag/doc/get7#myths
它是关于特定限制为256个字符的神话,并且在IE中存在可证明的限制.
该链接已由http://www.w3.org/2001/tag/doc/whenToUseGet-20030922#ephemeral取代(表示相同的意思)