zoukankan      html  css  js  c++  java
  • 浏览器和服务器 对http请求(post get) url长度限制

    1. GET  URL长度限制

    在Http1.1协议中并没有提出针对URL的长度进行限制,RFC协议里面是这样描述的,HTTP协议并不对URI的长度做任何的限制,服务器端 必须能够处理任何它们所提供服务多能接受的URI,并且能够处理无限长度的URI,如果服务器不能处理过长的URI,那么应该返回414状态码。

    虽然Http协议规定了,但是Web服务器浏览器对URI都有自己的长度限制。

    服务器的限制:我接触的最多的服务器类型就是Nginx和Tomcat,对于url的长度限制,它们都是通过控制http请求头的长度来进行限制 的,nginx的配置参数为large_client_header_buffers,tomcat的请求配置参数为 maxHttpHeaderSize,都是可以自己去进行设置。

      client_header_buffer_size 512k;
      large_client_header_buffers 7 512k;

    浏览器的限制:每种浏览器也会对url的长度有所限制,下面是几种常见浏览器的url长度限制:(单位:字符)

    • IE : 2803

    • Firefox:65536

    • Chrome:8182

    • Safari:80000

    • Opera:190000

    对于get请求,在url的长度限制范围之内,请求的参数个数没有限制。

    2. Post数据的长度限制

    Post数据的长度限制与url长度限制类似,也是在Http协议中没有规定长度限制,长度限制可以在服务器端配置最大http请求头长度的方式来实现。   nginix默认限制1M

    可以选择在http{ }中设置:client_max_body_size   20m;
     也可以选择在server{ }中设置:client_max_body_size   20m;
    还可以选择在location{ }中设置:client_max_body_size   20m;
    三者到区别是:http{} 中控制着所有nginx收到的请求。而报文大小限制设置在server{}中,则控制该server收到的请求报文大小,同理,如果配置在location中,则报文大小限制,只对匹配了location 路由规则的请求生效。
         http{
    #控制全局nginx所有请求报文大小
    #client_max_body_size   20m;
                    server{
    #控制该server的所有请求报文大小
    #client_max_body_size   20m;
                            location a {
     
                            }
                            location b{
    #控制满足该路由规则的请求报文大小
    #client_max_body_size   20m;
     
                            }
                    }
                    server {
     
     
                    }
         }

    3. Cookie的长度限制

    Cookie的长度限制分这么几个方面来总结。

    (1) 浏览器所允许的每个域下的最大cookie数目,没有去自己测试,从网上找到的资料大概是这么个情况

    • IE :原先为20个,后来升级为50个

    • Firefox: 50个

    • Opera:30个

    • Chrome:180个

    • Safari:无限制

    当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。当然无论怎样的策略,还是尽量不要让Cookie数目超过浏览器所允许的范围。

    (2) 浏览器所允许的每个Cookie的最大长度

    • Firefox和Safari:4079字节

    • Opera:4096字节

    • IE:4095字节

    (3) 服务器中Http请求头长度的限制。Cookie会被附在每次http请求头中传递给服务器,因此还会受到服务器请求头长度的影响。

     

     

     
  • 相关阅读:
    jquery queryBuilder过滤插件的使用
    前端跨域问题
    [BZOJ 3326] 数数
    [BZOJ 2427] 软件安装
    [BZOJ 3675] 序列分割
    [Atcoder Grand Contest 004] Tutorial
    [P2831] 愤怒的小鸟
    [Atcoder Regular Contest 065] Tutorial
    [P3806] Divide and Conquer on Tree
    [POJ 1741] Tree
  • 原文地址:https://www.cnblogs.com/xdot/p/9177304.html
Copyright © 2011-2022 走看看