你搞清楚了吗?| GET请求方式的长度限制到底是多少?

这篇具有很好参考价值的文章主要介绍了你搞清楚了吗?| GET请求方式的长度限制到底是多少?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

📍 浏览器限制

📍 服务器限制


你搞清楚了吗?| GET请求方式的长度限制到底是多少?

你搞清楚了吗?| GET请求方式的长度限制到底是多少?

在大多数人的一贯认识中,一直认为get请求方式有2048B的长度限制,其实这种说法是有失偏颇的,甚至可以说是错误的。

这个问题一直以来似乎是被N多人误解,其实Http Get方法提交的数据大小长度并没有限制,而是IE浏览器本身对地址栏URL长度有最大长度限制:2048个字符。我们来看看权威官网的解释:

在HTTP规范RFC-2616中有这样一段描述,协议原文如下:

The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET- based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).

Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or proxy implementations might not properly support these lengths.

翻译:

HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的URIs,这种无效长度的URL可能会在客户端以基于GET方式的请求时产生。如果服务器不能处理太长的URI的时候,服务器应该返回414状态码(此状态码代表Request-URI太长)。

注:服务器在依赖大于255字节的URI时应谨慎,因为一些旧的客户或代理实现可能不支持这些长度。

从以上内容中可以看出,其实http 1.1 协议中对URL的长度是不受限制的,HTTP RFC规范中并没有规定GET请求的URI长度,只是说明如果server无法处理太长的URI,可以通过返回414状态码。

协议规范中虽然未对GET请求的url长度做出明确的限制规定,但是在主流的用户代理浏览器和应用服务器中对GET请求却做出限制或者相关的可配置。也就是说在真正实现中,url的长度还是受到限制的,一是服务器端的限制,二就是浏览器览器端的限制。

1、Http get方法提交的数据大小长度并没有限制,Http协议规范没有对URL长度进行限制

目前说的get长度有限制,是特定的浏览器及服务器对它的限制。各种浏览器和服务器的最大处理能力如下:

📍 浏览器限制

  • IE浏览器(Microsoft Internet Explorer) 对url长度限制是2083(2K+53)个字符,超过这个限制,则自动截断(若是form提交则提交按钮不起作用,没有任何反应)。

——以下是微软官方的一段说明:Internet Explorer 中的最大 URL 长度为 2,083 个字符

Microsoft Internet Explorer has a maximum uniform resource locator (URL) length of 2,083 characters. Internet Explorer also has a maximum path length of 2,048 characters. This limit applies to both POST request and GET request URLs.

If you are using the GET method, you are limited to a maximum of 2,048 characters, minus the number of characters in the actual path.

However, the POST method is not limited by the size of the URL for submitting name/value pairs. These pairs are transferred in the header and not in the URL. ‘>However, the POST method is not limited by the size of the URL for submitting name/value pairs. These pairs are transferred in the header and not in the URL.

RFC 2616, “Hypertext Transfer Protocol — HTTP/1.1,” does not specify any requirement for URL length.
-----------------------------------

摘要

Microsoft Internet Explorer 的最大统一资源定位器 (URL) 长度为 2,083 个字符。 Internet Explorer 的最大路径长度也为 2,048 个字符。 此限制适用于 POST 请求和 GET 请求 URL。

如果使用的是 GET 方法,则限制为最多 2,048 个字符,减去实际路径中的字符数。

但是,POST 方法不受提交名称/值对的 URL 大小的限制。 这些对在标头中传输,而不是在 URL 中传输。

RFC 2616,“超文本传输协议 -- HTTP/1.1”没有指定 URL 长度的任何要求。

参考

有关组件的进一步细分,请参阅 Wininet 标头文件。

有关详细信息,请参阅以下 Internet Social 网站中的 RFC 2616 第 3.2.1 节“超文本传输协议 -- HTTP/1.1”部分:ftp://ftp.isi.edu/in-notes/rfc2616.txt

  • Safari:url最大长度限制为80000个字符。

  • Opera:url最大长度限制为190000个字符。

  • Chrome:url最大长度限制为8182个字符。超过最大限制则服务器会返回上面列出的414错误。

  • Firefox:对Firefox浏览器url的长度限制为:65536个字符。

所以,大多数浏览器的限制在2k-8k之间,更老的版本浏览器甚至只支持255 bytes。

📍 服务器限制

  • Apache能接受url长度限制为8192字符

  • Microsoft Internet Information Server(IIS):n能接受最大url的长度为16384个字符。

  • tomcat中通过较多的Connector参数控制url长度限制:
    maxParameterCount:GET和POST请求参数个数,默认是10000
    maxPostSize:POST请求数据最大值

  • nginx可以通过修改配置来改变url请求串的url长度限制:
    client_header_buffer_size 默认值:1k
    large_client_header_buffers默认值:4k或8k

所以,大多数Web服务器的限制为8192字节(8KB),通常可以在服务器配置中的某个位置进行配置

2、理论上讲,post是没有大小限制的。Http协议规范也没有进行大小限制,起限制作用的是服务器处理程序的处理能力。

Tomcat下默认post长度为2M,可通过修改conf/server.xml中的“maxPostSize=0”来取消对post大小的限制。

◼️ 注意:(若长度超限,则服务端返回414标识)

1、首先即使有长度限制,也是限制的是整个URI长度,而不仅仅是你的参数值数据长度。

2、HTTP协议从未规定GET/POST的请求长度限制是多少

3、所谓的请求长度限制是由浏览器和web服务器决定和设置的,浏览器和web服务器的设定均不一样,这依赖于各个浏览器厂家的规定或者可以根据web服务器的处理能力来设定。


📋 参考资料:URL长度限制

你搞清楚了吗?| GET请求方式的长度限制到底是多少?文章来源地址https://www.toymoban.com/news/detail-451204.html

到了这里,关于你搞清楚了吗?| GET请求方式的长度限制到底是多少?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java业务代码发送http请求(Post方式:请求参数为JSON格式;Get方式)

    实际开发中,可能需要发送http请求到第三方服务获取数据,于是就有以下应用: 依赖: 假设我需要在我的业务代码中调用该地址: url:http://xx.xx:xxxx/user/count 请求方法:post 内容类型:application/json 请求参数:id, username 返回参数:code 响应结果 int类型                  

    2024年02月12日
    浏览(61)
  • Java 中使用 OkHttpClent 请求接口 get方式 post方式

    学习记录,不喜勿喷 一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进行处理。比如可以使用http客户端与第三方服务(如SSO服务)进行集成,当然还可以爬取网上的数据等。OKHttp与HttpClient类似,也是一个Http客户端,提供了对 HTTP/2 和

    2024年02月12日
    浏览(58)
  • get方式发送请求出现跨域问题

    Access to XMLHttpRequest at \\\'http://localhost:8090/concern?pageSize=10pageNum=1param[deviceWorkspace]=param[userAccount]=%22190013129%22\\\' from origin \\\'http://localhost:8080\\\' has been blocked by CORS policy: No \\\'Access-Control-Allow-Origin\\\' header is present on the requested resource. 但同伴说他已经在后端对跨域问题进行处理了。这里可以考

    2024年02月16日
    浏览(40)
  • HTTP中get和post请求方式

    #get和post特点 get请求: 请求参数在请求地址后面,提交的数据量较小,安全性较差,不建议用来提交敏感信息(地址栏中会显示,并且有可能被保存请求地址)。 功能:GET 方法用于获取由 Request-URI 所标识的资源的信息 默认方法: GET方法是默认的HTTP请求方法 ,例如当我们

    2024年04月26日
    浏览(46)
  • http之GET请求和POST请求的传递参数的方式

    get: 情况1:接口正常返回 code,data,message ,且无需传递参数 (vu3) 情况2: 需要将参数拼接到url地址上 (vue3)   情况3 需要传递参数,query 传参 (vue3) 情况4 既有query传参也有path传参 post 情况1 接口返回的数据没有使用data包裹,这种情况一般取不到数据,我们需要用 ext

    2024年02月16日
    浏览(44)
  • Get请求中三种传参方式解读

    这几天我在看go-zero框架,实现了一个简单的单体服务,但是使用postman测试接口的时候遇到点问题 error:field id is not set。就是说请求的参数解析失败 发现是我的入参的tag标签和传参对不上 一、使用form标签(最常用) form标签就是最常用的一种,form就是表单的意思,通过url传

    2023年04月21日
    浏览(41)
  • 前端post,get请求传参方式 以及后台接收

    post请求: 1:js中 2:使用 首先引入方法js: 调用方法 3:浏览器请求 4:后台参数接收 get请求: 第一种:通过params对象传递,将参数以键值对的形式传递,当传递的参数为多个时,浏览器会自动拼接进行分割 1:js中 2:使用 首先引入方法js: 调用方法 3:浏览器请求 4:后台

    2024年02月10日
    浏览(44)
  • Springboot GET和POST请求的常用参数获取方式

    可以在控制器方法的参数上使用@RequestParam注解来获取请求中的参数值。例如: 可以为@RequestParam注解的参数提供默认值,以处理参数缺失的情况。例如: 可以使用@RequestParam MapString, String来获取所有的请求参数键值对。例如: 如果参数是作为路径的一部分传递的,可以使用

    2024年02月10日
    浏览(87)
  • ajax请求的时候get 和post方式的区别?

    在 AJAX 请求中,GET 和 POST 是两种常用的请求方法,它们在发送请求时有一些区别: GET 请求: GET 请求用于向服务器请求获取指定资源,请求参数会附加在 URL 的末尾,以查询字符串的形式出现。 GET 请求将请求参数暴露在 URL 上,因此在浏览器的地址栏、历史记录等地方可见

    2024年02月08日
    浏览(48)
  • Qt Http请求,post和get的两种方式

    今天我们介绍一下QT的http请求,这里有post和get两种方式 一、post请求方式:参数分为网址和具体请求值两个部分,有时候还需要设置头信息,看具体情况定 二、get请求方式:参数和网址拼接到一起请求 三、主要区别: get用于请求获取数据,post向指定的资源创建修改数据 g

    2024年02月15日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包