|
HTTP返回状态码的含义比较丰富,随着HTTP版本的变化,状态码也在逐渐增加,以满足越来越多的状态信息传递。 302错误表示被请求的资源暂时转移(Moved temporatily),然后会给出一个转移后的URL,而浏览器在处理服务器返回的302错误时,原则上会重新建立一个TCP连接,然后再取重定向后的URL的页面;但是如果页面存在于缓存中,则不重新获取。 404错误表示无法找到请求的资源,一般来说是文件不存在,这时候浏览器直接显示一个错误。 需要说明的是:实际上HTTP/1.1的RFC中对302和404又定义了很多个子状态码,分别表示多种情况,这里不再一一赘述。 一般的网站在用户请求的页面不存在的时候,为了友好起见,会返回一个302错误,然后重定向到一个正常页面。因此可以看出,如果服务器在遭受DDOS静态页面请求攻击而请求页面又不存在的时候,服务器返回302错误会比404错误消耗的资源更多(当客户端缓存不存在重定向后的页面的时候),因为每次请求会产生一个附加请求,而这次请求还会产生于一个新的TCP连接上。 如:浏览器缓存中存在重定向后的页面时: 从上面的抓包来看,只有一个TCP连接,也只有一次GET请求。在没有缓存的时候: 可用看到,产生了两个TCP连接,一个用的是2199端口,一个用的是2200端口。 |
阅读(1448) | 评论(0) | 转发(0) |
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225513.html原文链接:https://javaforall.net
