HTTP协议FAQ

1.

Q: 网络中充斥着大量的HTTP请求报文,
其中有很多是用户点击浏览器后,浏览器根据返回的页面中携带的URL信息自动发起的请求,
在路由中间设备上如何才能判断一个HTTP请求消息是用户点击某个连接,或者是在地址栏中输入的HTTP请求消息呢?

 

A:

可以通过Referer域来区别。
Referer域 表示改请求是由哪个页面(URI)衍生出来的请求。
 
Referer: http://************************.html

如果请求里有Referer域, 则说明改请求是用户点击Referer所指页面引发的。
如果没有Referer域,则是用户用键盘输入地址栏引发的


-
千里孤行

 

 ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- -------

 

2.

Q:请教, 按照http协议的规定

http的DELETE方法可以有消息体吗?

A:

从Delete方法的意义来看,不必带消息体。
RFC2616(HTTP1.1)上对Delete方法,没规定说不能带消息体。

RFC2616还说,如果某种Request方法没规定不带消息体,则最后处理Request的服务器要忽略掉消息体。

所以,如果你做客户端,那么你发Delete方法,就不要带消息体。
如果你做转发服务器,这些,则要读取delete的消息体,并继续转发。
如果你做的是最终的处理请求的服务器,则忽略delete的消息体。

 

 

 

 

 ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- -------

3.

Q: 在网关设备如何过滤出浏览器主动发出的http get请求?


一台计算机充斥着很多HTTP GET请求从我的路由器出去到外网,如果知道现在这个HTTP GET请求是浏览器发出的,
而不是其它软件发起的(象一些杀毒软件升级,windows检查更新和升级都是发起http get的)

如果是浏览器发出的HTTP GET请求,就做一些特别的处理,比如加一些标志什么的. 
其它软件发出的就不做处理

 

A:


这个HTTP协议倒是提供了一些支持。
HTTP的GET请求里头有个头部叫 User-Agent,用来标识发送请求的客户端。目的也是可以针对客户端做一些统计和特别处理。

比如用Opera浏览器发起的HTTP GET里头的user agent是这样:

User-Agent: Opera/9.80 (Windows NT 5.1; U; Cabbage Edition; zh-cn) Presto/2.2.15

Version/10.00/r/n


基本上从这个域过滤的话,可能你需要做一点前期工作,就是收集几种可能的浏览器,这样子。

 

 

 

 


- 千里孤行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值