2013-08-06 53 views
2

我正在一个服务器上工作,我想知道什么时候应该遵守头文件中的保持活动?如果客户发送没有或有不正确授权的请求,如果在401响应发送后保持活动状态,什么时候兑现保持活跃

更广泛的问题是:是否有文档或标准显示哪些代码应该遵守保持活动,哪些不应该?我可以看到这500辆车并没有兑现保持活力,但可能仍然尊重400年代的保持活力。

目前这个正在使用的逻辑:

if ((400 <= status) && (505 >= status) 
{ 
    keep-alive = false; 
} 
else 
{ 
    //Do not update keep alive leave as what client requested 
} 

谢谢!

+1

这将成为HTTP协议的一部分,这是您通过编写Web服务器实现的标准。 http://www.w3.org/Protocols/rfc2616/rfc2616.html –

+0

嗨,是的,我查看了标准,但它没有提及(我可以找到)具体关于何时和何时不兑现保持时间的信息, http标头中的活动标志 – Jtello

+1

当您不应该保持持久连接时,没有规范定义的实例。您不必遵守保持活跃的请求;你可以通过发送一个没有keep-alive关键字的回应来拒绝。但是,如果您打算实施保持活动状态,则没有理由为任何状态代码设置例外。规范并没有要求你,你的逻辑对我来说没有意义。一个状态的响应代码不会告诉您可能发出的下一个请求以及响应代码的内容。 –

回答

0

即使在HTTP/1.1中,大多数服务器都指定连接类型“Connection:close”是默认值。连接类型通常在头部的底部指定,即使它不需要。什么样的HTTP代码应该改变连接类型没有约定。

如果是4-代码或5-代码,您通常会关闭连接,因为您不希望用户代理(浏览器)尝试与服务器对接,直到用户刷新网页或尝试访问另一个。保持连接打开只会使客户端在访问服务器上的其他资源时稍微快一点。

很多服务器在每次请求后关闭连接。请注意,如果用户代理在标题中指定了“Connection:close”,则无论您可以回复,连接将始终关闭。

每当你指定关闭连接时,客户端会希望你关闭连接,这个头文件只是告诉Socket的结尾处你要做什么。