如何调整nginx和apache服务器的header限制的大小?

如何调整nginx和apache服务器的header限制的大小?,第1张

可以通过2个参数来调整nginx的header上限。

client_header_buffer_size 16k。

arge_client_header_buffers 4 16k。

LimitRequestLine 指令设置的是每一个header长度的上线。

引用LimitRequestLine 指令。

限制接受客户端发送的HTTP请求行的字节数。

语法 LimitRequestLine bytes。

默认值 LimitRequestLine 8190。

作用域 server config。

状态 核心(C)。

模块 core。

bytes将设置HTTP请求行的字节数限制。

LimitRequestLine指令允许服务器管理员增加或减少客户端HTTP请求行允许大小的限制。

LimitRequestFieldSize指令设置的是所有header总长度的上限值

引用LimitRequestFieldSize 指令

语法 LimitRequestFieldsize bytes

默认值 LimitRequestFieldsize 8190

作用域 server config

状态 核心(C)

模块 core

bytes指定了HTTP请求头允许的字节大小。

LimitRequestFieldSize指令允许服务器管理员增加或减少HTTP请求头域大小的限制。

首先,我们先看一下http的头信息到底是什么:

HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而 言,包括message-header和message-body两部分。首先传递message- header,即http header消息。http header 消息通常被分为4个部分: general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确,根据日常使用,大体分为Request和Response两部分。

在通常的servlet/jsp应用中,我们只是从http的header中取得信息,如果要设置信息,需要用到HttpClient,具体的设置方法如下:

HttpResponse response = null

HttpGet get = new HttpGet(url)

get.addHeader("Accept", "text/html")

get.addHeader("Accept-Charset", "utf-8")

get.addHeader("Accept-Encoding", "gzip")

get.addHeader("Accept-Language", "en-US,en")

get.addHeader("User-Agent", "Mozilla/5.0 (X11Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22")

response = client.execute(get)

HttpEntity entity = response.getEntity()

Header header = entity.getContentEncoding()

if (header != null)

{

HeaderElement[] codecs = header.getElements()

for (int i = 0i <codecs.lengthi++)

{

if (codecs[i].getName().equalsIgnoreCase("gzip"))

{

response.setEntity(new GzipDecompressingEntity(entity))

}

}

}

return response

其中,client为一个HttpClient的实力,创建方式如:

SchemeRegistry schemeRegistry = new SchemeRegistry()

schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()))

schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()))

PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry)

cm.setMaxTotal(200)

cm.setDefaultMaxPerRoute(2)

HttpHost googleResearch = new HttpHost("research.google.com", 80)

HttpHost wikipediaEn = new HttpHost("en.wikipedia.org", 80)

cm.setMaxPerRoute(new HttpRoute(googleResearch), 30)

cm.setMaxPerRoute(new HttpRoute(wikipediaEn), 50)

DefaultHttpClient client = new DefaultHttpClient(cm)

//    使用通配符 * ,表示当前服务端 返回的信息允许所有源访问,也可指定可信任的域名来接收响应信息        

header("Access-Control-Allow-Origin: http://localhost:3000")

header("Access-control-Allow-Origin:*")

//    响应头设置为ajax提交        

header("Access-Control-Allow-Headers:X-Requested-With")

//    允许携带 用户认证凭据(也就是允许客户端发送的请求携带Cookie)        

header("Access-Control-Allow-Credentials:true")

写到方法内部


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11042925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存